Muitos processadores possuem instruções "pequenas" que podem executar operações aritméticas, incluindo comparações, em certos operandos imediatamente especificados. Operandos que não sejam esses valores especiais devem usar um formato de instrução maior ou, em alguns casos, devem usar uma instrução "carregar valor da memória". No conjunto de instruções do ARM Cortex-M3, por exemplo, há pelo menos cinco maneiras pelas quais um valor pode ser comparado a uma constante:
cmp r0,#1 ; One-word instruction, limited to values 0-255
cmp r0,#1000 ; Two-word instruction, limited to values 0-255 times a power of 2
cmn r0,#1000 ; Equivalent to comparing value with -1000
; Two-word instruction, limited to values 0-255 times a power of 2
mov r1,#30000 ; Two words; can handle any value 0-65535
cmp r0,r1 ; Could use cmn to compare to values -1 to -65535
ldr r1,[constant1000000] ; One or two words, based upon how nearby the constant is
cmp r0,r1
...
constant1000000:
dd 1000000
A primeira forma é a menor; a segunda e terceira forma podem ou não ser executadas tão rapidamente, dependendo da velocidade da memória da qual o código é buscado. A quarta forma de formulário quase certamente será mais lenta que as três primeiras e a quinta forma ainda mais lenta, mas a última pode ser usada com qualquer valor de 32 bits.
Nos processadores x86 mais antigos, as instruções de comparação de formato curto seriam executadas mais rapidamente do que as de formato longo, mas muitos processadores mais recentes convertem os formatos longo e curto na mesma representação quando são buscados pela primeira vez e armazenam essa representação uniforme no cache. Assim, enquanto os controladores embarcados (como os encontrados em muitas plataformas móveis) terão uma diferença de velocidade, muitos computadores baseados em x86 não terão.
Observe também que, em muitos casos em que uma constante é muito usada em um loop, um compilador precisará carregar a constante em um registro apenas uma vez - antes do início do loop - tornando as diferenças de tempo irrelevantes. Por outro lado, existem algumas situações, mesmo em pequenos loops, onde isso nem sempre acontece; se um loop é pequeno, mas com execução pesada, ocasionalmente pode haver um desempenho importante entre as comparações que envolvem valores imediatos curtos e as que envolvem valores mais longos.