【发布时间】:2021-02-20 15:57:40
【问题描述】:
解释器做了很多额外的工作,因此它们最终比本地机器代码慢得多是可以理解的。但 C# 或 Java 等语言有 JIT 编译器,据说可以编译为平台本机机器代码。
然而,根据 benchmarks 这似乎足够合法,在大多数情况下仍然比 C/C++ 慢 2-4 倍?当然,我的意思是与同样优化的 C/C++ 代码相比。我很清楚 JIT 编译的优化优势以及它们生成比优化不佳的 C+C++ 更快的代码的能力。
毕竟,Java 内存分配有多好,为什么会有这样的horrendous 内存使用? 2 到 50 倍,平均而言,在该特定基准套件中使用的内存增加了大约 30 倍,这没什么好打喷嚏的......
请注意,我不想开始 WAR,我想询问定义这些性能和效率数据的技术细节。
【问题讨论】:
-
虽然 JIT 编译器和离线编译器都必须平衡编译时间和执行速度,但离线编译器可以将平衡更多地放在执行速度上。
标签: performance memory-management native jit machine-code