相关疑难解决方法(0)

JIT编译器与离线编译器

是否存在JIT编译器比其他编译器(如C++)更快的情况?

您认为将来JIT编译器只会看到次要的优化,功能但是会遵循类似的性能,还是会有突破性的优势使其无限优于其他编译器?

看起来多核心范式有一些希望,但它不是普遍的魔力.

任何见解?

.net c# c++ compiler-construction jit

37
推荐指数
3
解决办法
7952
查看次数

为什么用JIT编译器(就应用程序性能而言)难以击败AOT编译器?

我认为JIT编译器最终将在编译代码的性能方面击败AOT编译器,因为JIT具有固有的优势(可以使用仅在运行时可用的信息).一个论点是AOT编译器可以花更多时间编译代码,但服务器VM也可能花费大量时间.

我知道JIT确实在某些情况下击败了AOT编译器,但在大多数情况下它们似乎仍然落后.

所以我的问题是,阻止JIT编译器击败AOT编译器的具体而棘手的问题是什么?

编辑:
一些常见的论点:

  • AOT编译器可以花更多时间进行高级优化- >如果您运行的服务器虚拟机数天,您可以花费相同的时间,如果不是更长的话.
  • 字节代码解释有成本- >大多数JIT编译器最近都会缓存本地机器指令.

另一个编辑:
有关具体示例,请参阅此文章:改进Swing性能:JIT与AOT编译.从我从本文中可以收集的内容来看,作者基本上说当没有热点时,运行时信息的优势会降低,因此没有JIT开销的AOT就会获胜.但是40%?这似乎没有多大意义.仅仅是因为这种情况没有调整被比较的JIT编译器吗?还是更基本的东西?

compiler-construction performance jit vm-implementation

33
推荐指数
1
解决办法
1万
查看次数

JIT vs NGen - 有什么区别?

因此,当CLR运行时加载.NET程序集时,它会将其编译为机器本机代码.此过程称为JITing.NGen也是将.NET程序集编译为本机代码的过程.我不明白两者有什么区别?

.net clr jit ngen

31
推荐指数
4
解决办法
1万
查看次数