性能 – 为什么编译语言最终成为机器代码时不能平等地执行?

例如,如果C#, Java或C都编译为机器代码,为什么它们不是同样的?

我的理解是,这些语言是机器代码的抽象,这是他们最终编译的.处理器不应该确定性能?

一方面,C优化器更加成熟.另一个表现一直是C语言设计师的首要目标(“你不支付你不使用的钱”)这个咒语,这显然不能说Java的每个方法的虚拟政策).

除此之外,C模板比Java或C#泛型更优化.尽管JIT经常受到赞扬,因为他们能够跨模块边界进行优化,但仿制药在其轨道上阻止了这一死亡. CLR(.NET运行时)仅生成涵盖所有引用类型的泛型的一个版本的机器代码.另一方面,C优化器针对模板参数的每个组合运行,并且可以进行内联依赖调用.

接下来,使用C#和Java对内存布局进行很少的控制.并行算法可能遭受高速缓存行错误共享的性能下降的数量级,并且几乎没有开发人员可以做的. OTOH C提供了相对于RAM页面和缓存边界以特定偏移量放置对象的工具.

相关文章
相关标签/搜索