gpt4 book ai didi

performance - 如果编译语言最终成为机器代码,为什么它们的性能不一样?

转载 作者:行者123 更新时间:2023-12-04 00:28:25 25 4
gpt4 key购买 nike

例如,如果 C#、Java 或 C++ 都编译为机器代码,为什么它们的性能不一样?

我的理解是,这些语言是机器代码的抽象,它们最终都编译成这样。处理器不应该决定性能吗?

最佳答案

一方面,C++ 优化器要成熟得多。另一个,性能一直是 C++ 语言设计者的首要目标(“你不为你不使用的东西付费”是口头禅,这显然不能说 Java 的每一个方法都是虚拟的策略)。

除此之外,C++ 模板比 Java 或 C# 泛型更易于优化。尽管 JIT 经常因其跨模块边界优化的能力而受到称赞,但泛型阻止了这种死循环。 CLR(.NET 运行时)只为涵盖所有引用类型的泛型生成一个版本的机器代码。另一方面,C++ 优化器针对模板参数的每个组合运行,并且可以内联相关调用。

接下来,使用 C# 和 Java,您几乎无法控制内存布局。并行算法可能会因缓存行的错误共享而导致性能下降一个数量级,而开发人员对此几乎无能为力。 OTOH C++ 提供了将对象放置在相对于 RAM 页面和缓存边界的特定偏移量的工具。

关于performance - 如果编译语言最终成为机器代码,为什么它们的性能不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638283/

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