gpt4 book ai didi

performance - 为什么 JIT 语言仍然比原生 C/C++ 更慢且内存效率更低?

转载 作者:行者123 更新时间:2023-12-03 13:33:54 25 4
gpt4 key购买 nike

解释器做了很多额外的工作,所以它们最终比本地机器代码慢很多是可以理解的。但是 C# 或 Java 等语言有 JIT 编译器,据说可以编译为平台本地机器代码。

然而,根据 benchmarks这似乎足够合法,在大多数情况下仍然比 C/C++ 慢 2-4 倍?当然,我的意思是与同样优化的 C/C++ 代码相比。我很清楚 JIT 编译的优化优势以及它们生成比优化不佳的 C+C++ 更快的代码的能力。

毕竟关于 Java 内存分配有多好的噪音,为什么这样 horrendous内存使用情况? 2 到 50 倍,平均大约 30 倍以上的内存在特定的基准测试套件中使用,这没什么可小瞧的......

请注意,我不想启动 WAR,我询问的是定义这些性能和效率数据的技术细节。

最佳答案

产生差异的一些原因;

  • JIT 编译器大多编译速度快,并跳过一些需要更长时间才能找到的优化。
  • VM 通常会强制执行安全性,这会减慢执行速度。例如。除非保证在正确的范围内,否则数组访问始终在 .Net 中进行边界检查
  • 在 C++ 中使用 SSE(如果适用,可以提高性能)很容易,而在当前 VM 中很难使用
  • 与 VM 的
  • 相比,C++ 中的性能比其他方面更重要。
  • 虚拟机通常会在返回操作系统之前保留一段时间未使用的内存,似乎“使用”更多内存。
  • 一些 VM 生成值类型的对象,如 int/ulong.. 增加对象内存开销
  • 一些 VM 的自动对齐数据结构会浪费大量内存(为了提高性能)
  • 一些 VM 将 bool 值实现为 int(4 字节),很少关注内存保护。
  • 关于performance - 为什么 JIT 语言仍然比原生 C/C++ 更慢且内存效率更低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881853/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com