dte*_*ech 6 performance jit memory-management native machine-code
解释器做了很多额外的工作,因此可以理解它们最终比本机机器代码慢得多.但是像C#或Java这样的语言有JIT编译器,据说它们可以编译成平台本机代码.
然而,根据看似合法的基准,在大多数情况下仍然比C/C++慢2-4倍?当然,我的意思是与同等优化的C/C++代码相比.我很清楚JIT编译的优化优势以及它们生成比优化不佳的C + C++更快的代码的能力.
关于Java内存分配有多好的噪音,为什么这么可怕的内存使用呢?2x到50x,在特定的基准测试套件中平均使用的内存大约多30倍,这对于打喷嚏没什么...
请注意,我不想启动WAR,我要求提供定义这些性能和效率数据的技术细节.
差异的一些原因;
JIT编译器主要是快速编译并跳过一些需要更长时间才能找到的优化.
VM通常会强制执行安全性,这会降低执行速度.例如,除非保证在正确的范围内,否则数组访问始终在.Net中进行检查
使用SSE(如果适用的话,性能很好)很容易从C++开始,而且很难从当前的VM开始
与VM相比,性能在C++中优先于其他方面
在返回操作系统之前,VM通常会将未使用的内存保留一段时间,以便"使用"更多内存.
有些虚拟机会创建值类型的对象,如int/ulong ..添加对象内存开销
一些VM的自动对齐数据结构浪费了很多内存(性能提升)
有些VM实现了一个boolean作为int(4个字节),很少关注memoryconservation.