Lenguaje compilado
Los programas compilados en código nativo en tiempo de compilación suelen ser más rápidos que los traducidos en tiempo de ejecución debido a la sobrecarga del proceso de traducción. Sin embargo, las nuevas tecnologías, como la compilación justo a tiempo, y las mejoras generales en el proceso de traducción están empezando a reducir esta diferencia. Las soluciones mixtas que utilizan bytecode tienden a una eficiencia intermedia.
Los lenguajes de programación de bajo nivel suelen compilarse, especialmente cuando la eficiencia es la principal preocupación, más que el soporte multiplataforma. Para estos lenguajes, existen más correspondencias uno a uno entre el código programado y las operaciones de hardware realizadas por el código máquina, lo que facilita a los programadores el control del uso de la unidad central de procesamiento (CPU) y de la memoria en detalle.
Con cierto esfuerzo, siempre es posible escribir compiladores incluso para lenguajes tradicionalmente interpretados. Por ejemplo, Common lisp puede ser compilado a bytecode Java (luego interpretado por la máquina virtual Java), código C (luego compilado a código máquina nativo), o directamente a código nativo. Los lenguajes de programación que admiten múltiples objetivos de compilación dan a los desarrolladores más control para elegir la velocidad de ejecución o la compatibilidad entre plataformas.