及时编译具有许多理论优势:它具有更多关于机器、标志状态和代码使用情况的信息。 它允许您在运行之前避免耗时的编译,加快开发周期。
简单地说,JIT编译似乎是一种更好的方法;虽然存在一些开销,但如果足够智能,它可以加速代码以抵消这些开销。
但是,我认为这并不是全部。有哪些理论和实际的缺点呢? 是的,“启动时间较慢”经常被提及,还有“内存消耗增加”,但我想知道是否还有其他方面。
例如,跟踪和JIT编译是否会破坏CPU高速缓存? 如果您的程序很大,并且实际上没有太多特别热门的路径,那么跟踪和JIT可能需要花费更多时间,这是否值得?
似乎有人已经写了一篇关于此或解决JIT固有问题的论文。如果有人有测量数据,那就更好了。
编辑:我正在讨论即时编译与预先编译(可能具有反馈定向优化)相比,而不是与解释相比。
简单地说,JIT编译似乎是一种更好的方法;虽然存在一些开销,但如果足够智能,它可以加速代码以抵消这些开销。
但是,我认为这并不是全部。有哪些理论和实际的缺点呢? 是的,“启动时间较慢”经常被提及,还有“内存消耗增加”,但我想知道是否还有其他方面。
例如,跟踪和JIT编译是否会破坏CPU高速缓存? 如果您的程序很大,并且实际上没有太多特别热门的路径,那么跟踪和JIT可能需要花费更多时间,这是否值得?
似乎有人已经写了一篇关于此或解决JIT固有问题的论文。如果有人有测量数据,那就更好了。
编辑:我正在讨论即时编译与预先编译(可能具有反馈定向优化)相比,而不是与解释相比。