Linguagem compilada
Programas compilados em código nativo em tempo de compilação tendem a ser mais rápidos do que aqueles traduzidos em tempo de execução, devido à sobrecarga do processo de tradução. Novas tecnologias, como a compilação just-in-time, e melhorias gerais no processo de tradução estão começando a diminuir esta lacuna, no entanto. Soluções mistas usando bytecode tendem à eficiência intermediária.
Linguagens de programação de baixo nível são tipicamente compiladas, especialmente quando a eficiência é a principal preocupação, ao invés de suporte multiplataforma. Para tais linguagens, existem mais correspondências um-a-um entre o código programado e as operações de hardware realizadas por código de máquina, facilitando aos programadores o controle do uso da unidade central de processamento (CPU) e da memória em detalhes finos.
Com algum esforço, é sempre possível escrever compiladores mesmo para linguagens tradicionalmente interpretadas. Por exemplo, o Common lisp pode ser compilado para o bytecode Java (então interpretado pela máquina virtual Java), código C (então compilado para o código da máquina nativa), ou diretamente para o código nativo. Linguagens de programação que suportam múltiplos alvos de compilação dão aos desenvolvedores mais controle para escolher a velocidade de execução ou compatibilidade entre plataformas.