Por que as linguagens JIT-ed ainda são mais lentas e menos eficientes em termos de memória do que o C / C ++ nativo?

Os intérpretes fazem muito trabalho extra, então é compreensível que eles sejam significativamente mais lentos que o código de máquina nativo. Mas linguagens como C # ou Java possuem compiladores JIT, que supostamente compilam para código de máquina nativa de plataforma.

E ainda, de acordo combenchmarks que parece bastante legítimo, na maioria dos casos ainda são 2-4x vezes mais lentos que C / C ++? Claro, quero dizer, em comparação com o código C / C ++ igualmente otimizado. Eu estou bem ciente dos benefícios de otimização da compilação JIT e sua capacidade de produzir código que é mais rápido que C + C ++ mal otimizado.

E depois de todo esse barulho sobre o quão boa é a alocação de memória Java, por que talhorrendo uso de memória? 2x a 50x, em média, cerca de 30x mais memória está sendo usada em toda essa suíte de benchmark, que não é nada para ...

OBSERVE que não quero iniciar um WAR, estou perguntando sobre os detalhes técnicos que definem esses números de desempenho e eficiência.

questionAnswers(3)

yourAnswerToTheQuestion