É a diferença do teoricamente possível, do realmente possível.
Teoricamente é possível fazer em assembly um programa mais rápido que em C.
Mas, na prática, isso não é possível:
- Compiladores NUNCA perdem uma chance de otimização;
- Organização do código contribui para boa performance;
- O número de bugs é incrivelmente reduzido (e bota incrivelmente nisso);
- Um compilador específico conhece centenas de instruções específicas, além de técnicas de otimização. Mesmo que você seja bom em assembly, tente entender um código gerado em C com compilação o3 num compilador específico da Intel, e você vai ver o que estou falando.
Na Siemens, constatamos que programar em C com muito cuidado era mais fácil e gerava código mais rápido do que em assembly. Mesmo com desenvolvedores experientes nas duas plataformas e altos investimentos em otimização. O que não significa que pequenas rotinas muito específicas fossem escritas em ASM, mas aí, em trechos bastante restritos e críticos.[/quote]
Sem falar que a linguagem c foi criada justamente para se poder ter os mesmos recursos do assembly em uma linguagem de nível mais alto. Hoje é praticamente inviável escrever um aplicação em assembly. Digo aplicação, mas em hardware ou partes críticas de programas(como funções de copia e transferência de dados na memória Ex: memcpy, copymem, ZeroFill) ainda é amplamente utilizado assim como c.