(1)我写了一个关于这个问题的问题,但我认为我没有正确说明问题所以我删除了它。为了达到目的,在我的GUI应用程序中,我注意到当我想测量使用System.currentTimeMillis();
的方法所花费的运行时间时,与标准运行方式相比,时间变得非常短且不切实际{{1}通过终端或控制台的文件,Java Swing在这里产生了一些效果吗?
(2)由于我想保留我的GUI并且也解决了这个问题,我读到了禁用JIT的可能性,如何在程序中将其写为一段代码,因此在运行时,JIT被禁用我的应用程序的运行时间。
谢谢。
答案 0 :(得分:2)
使用-Xint
选项运行程序,"以仅解释模式运行应用程序。禁用对本机代码的编译,并且解释器执行所有字节码。在这种模式下,即时(JIT)编译器提供的性能优势不存在。"
作为一个具体示例,此AnimationTest
显示使用paintComponent()
在System.nanoTime()
中花费的平均时间。使用-Xint
选项,时间保持相当稳定:
java -Xint -cp build/classes overflow.AnimationTest
如果没有选项,即与编译为本机代码,很容易看到绘画时间长期减少,有时甚至达到一个数量级:
java -cp build/classes overflow.AnimationTest