Performance gain in compiling java to native code?如今,从将Java编译为本地代码是否可以获得任何性能,还是随着时间的流逝,现代的热点编译器最终都会这样做吗? 一些轶事证据。我已经研究了一些对性能至关重要的实时交易金融应用程序。我同意弗兰克的观点,几乎每当您的问题不是缺少被编译时,而是您的算法或数据结构。现代的热点编译器非常适合使用正确的代码,例如CERN Colt库在为数字工作而编译,优化的Fortran的90%之内。 如果您担心速度,我真的会推荐一个好的Profiler并获得有关您瓶颈所在的证据-我使用YourKit感到非常满意。 在过去的几年中,我们仅在一次实例中求助于本机编译代码,因此我们可以使用CUDA并获得出色的GPU性能。 最近,在这里有一个类似的讨论,问题是字节码比本机代码有什么优势?您可以在该线程中找到有趣的答案。 您的问题有点大,答案相差很大
所有最新的JVM都使用JIT,但是在旧的JVM上,Java代码比本地代码慢几倍。 如果您的服务器长时间运行或成批运行,并且一次又一次地执行相同的代码,则两者之间的差异非常小。 我们用C ++和Java编写了相同的批处理,并使用不同的数据集运行它,结果相差约3秒,数据集需要5分钟到几个小时。 但是要小心,它们是特殊的情况,会有重要的区别,例如需要大量内存的批处理。 内存性能还是CPU性能?还是这些天都一样? 我唯一的证据是轶事,并且在另一个平台上:将大量需要CPU的应用程序移植到C#(.NET 2.0)之后,我没有发现性能上的实质损失(我认为10%的水平并不重要)。编写良好的代码似乎在各种体系结构上都表现良好。 大多数应用程序花费/浪费时间在:
因此,根据我的经验,除非您正在编写视频编解码器,否则与仅依赖于热点编译器相比,编译Java应用程序没有任何好处。
尝试用6种不同的实现方法来检查Hello-World只是为了检查开销 |