Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在连续迭代中更新/渲染循环速度更快_Java_Loops - Fatal编程技术网

Java 在连续迭代中更新/渲染循环速度更快

Java 在连续迭代中更新/渲染循环速度更快,java,loops,Java,Loops,我正在用java创建一个自定义界面屏幕。这个界面屏幕的一部分会获取一个给定的图像,然后将其随机分成给定数量的部分,然后在屏幕上轻微移动它们。在这上面画了一个覆盖层,它遮住了下面发生的大部分事情。这显然是非常低效的,因为很多正在绘制的东西都看不见,而且(我认为)这会导致界面屏幕在第一次启动时短暂停止。我修改了代码,以便只绘制通过覆盖层可以看到的部分,希望这能解决启动时的减速问题,但事实并非如此 当我打印出绘制循环的计时时,前三个时间很高:大约500毫秒,然后300毫秒,然后20毫秒,剩下的时间是稳

我正在用java创建一个自定义界面屏幕。这个界面屏幕的一部分会获取一个给定的图像,然后将其随机分成给定数量的部分,然后在屏幕上轻微移动它们。在这上面画了一个覆盖层,它遮住了下面发生的大部分事情。这显然是非常低效的,因为很多正在绘制的东西都看不见,而且(我认为)这会导致界面屏幕在第一次启动时短暂停止。我修改了代码,以便只绘制通过覆盖层可以看到的部分,希望这能解决启动时的减速问题,但事实并非如此

当我打印出绘制循环的计时时,前三个时间很高:大约500毫秒,然后300毫秒,然后20毫秒,剩下的时间是稳定的16毫秒(或60 fps)

是否还有其他原因可能导致启动时的速度减慢?java是否有可能在最初1000毫秒左右的时间内优化了我的绘图,以便在剩余时间内以16毫秒的速度运行?(比如意识到一些正在绘制的东西看不见,然后进行优化,这样就不会每次更新都绘制)-我真的不知道是什么原因导致了这种情况

我已经进行了彻底的检查,以确保更新启动后没有加载任何对象/线程/资产,这是我唯一能想到的事情


非常感谢您的帮助。

Java中的许多循环都是这样的。这是因为JVM可以以两种形式存储和运行代码:慢速字节码或快速本机代码。字节码是默认值,因为创建本机代码的成本很高。当程序执行时,JVM收集有关程序部分的信息,这些信息值得转换为本机代码;这称为代码的即时编译。因此,当您的程序执行时,它会变得更快

了解更多关于JavaJIT的信息:有没有一种方法可以从一开始就将某些内容标记为“本机代码”?所以一个特定的部分从一开始就运行得很快。不是真的。如果经常调用某个方法,JVM将编译为本机代码。命令行选项控制足够的频率。