Há um problema geral com essa questão, pois é absoluta demais. Realmente não faz sentido dizer que "o idioma X é mais rápido que o idioma Y". Uma linguagem de computador em si não é "rápida" ou "lenta" porque é apenas uma maneira de expressar um algoritmo. A pergunta real deve ser algo da ordem de "por que a implementação X1 da linguagem X é mais rápida que a implementação Y1 da linguagem Y para esse domínio de problema específico?"
Algumas diferenças de velocidade certamente cairão fora do próprio idioma, pois certos idiomas são mais fáceis de implementar em determinados domínios do que outros. Mas muito do que torna uma implementação rápida não é a linguagem. Por exemplo, você não pode realmente dizer "Python é mais lento que Java" sem considerar se está falando sobre CPython, IronPython ou PyPy. Isso é particularmente verdadeiro nos idiomas que usam uma VM, pois a velocidade será diretamente afetada pela qualidade da VM.
Além disso, trabalho com um sistema que, por várias razões, não pode usar o JIT em nosso dispositivo com uma VM JavaScript muito popular que normalmente oferece suporte a ela. Isso significa que nosso JavaScript é executado muito, muito mais lentamente do que em um PC com um processador semelhante. Essa alteração, que não está diretamente relacionada à linguagem em si, leva o JavaScript de "algumas vezes mais lento que o C ++" para "ordens de magnitude mais lenta que o C ++" para as tarefas que nos interessam.
Considere também que os idiomas diferem nas características de desempenho de maneiras que não são diretamente comparáveis. Muitos benchmarks apenas traduzem um programa do idioma A para o idioma B e não levam em consideração que os idiomas diferem em quais recursos são rápidos. (Você pode ver isso em qualquer comparação de benchmark razoável, como as que você vincula, pois costumam ter notas como "obrigado por isso por me mostrar como implementá-lo no idioma Foo.)
Por exemplo, tome este código Java:
for(int i=0;i<10;i++) {
Object o = new Object;
doSomething(o);
}
Seria tentador "reescrever" isso em C ++ e comparar os tempos de execução:
for(int i=0;i<10;i++) {
Object *o = new Object;
doSomething(o);
delete(o);
}
O problema é que qualquer programador C ++ competente verá imediatamente que, em C ++, essa não é a maneira mais rápida de fazer algo. Você pode facilmente acelerar as coisas alterando-as para serem mais apropriadas ao C ++:
for(int i=0;i<10;i++) {
Object o;
doSomething(&o);
}
A questão não é que o C ++ possa ser rápido, mas, em vez de escrever benchmarks para comparar idiomas, é muito, muito difícil. Para fazer isso adequadamente, você precisa ser especialista em ambos os idiomas e escrever do zero nos dois idiomas. Mesmo assim, você pode facilmente encontrar áreas em que um idioma se destaca em uma tarefa específica. Por exemplo, eu posso escrever uma versão do Towers of Hanoi em C ++ que será executada mais rapidamente do que Java em qualquer compilador razoável. Eu posso fazer isso trapaceando essencialmente, usando modelos C ++, avaliados em tempo de compilação (http://forums.devshed.com/c-programming-42/c-towers-of-hanoi-using-templates-424148.html)
A questão não é que eu possa dizer que "C ++ é mais rápido que Java" porque meu programa retornou instantaneamente enquanto a versão Java era executada por minutos (e esperando que ninguém percebesse que meu programa demorou meia hora para ser compilado). O ponto é que, para isso, Em caso estreito, o C ++ é mais rápido. Para outros casos estreitos, pode ser o contrário. Portanto, não é "C ++ é mais rápido", é "C ++ é mais rápido em casos em que você pode avaliar a expressão no tempo de construção usando modelos". Menos satisfatório, mas é verdade.
As diferenças de velocidade nos idiomas são principalmente sobre a implementação. Os idiomas compilados serão mais rápidos que os idiomas interpretados. Compilar no código nativo será mais rápido do que compilar no código de bytes. Isso terá muito mais efeito do que perguntas como se o idioma é estaticamente digitado ou não. E, claro, boas implementações serão mais rápidas que más.
E não esqueça que bons programadores produzirão código mais rápido que programas ruins, geralmente em uma extensão que supera bastante as diferenças de idioma.