gpt4 book ai didi

java - 为什么这个简单的小程序占用了我 50% 以上的 CPU?

转载 作者:行者123 更新时间:2023-11-29 09:40:24 25 4
gpt4 key购买 nike

我写了一个简单的小程序作为制作游戏的基础,它已经占用了我 50% 以上的 CPU。我使用的是 3ghz P4 和 1.5gb 内存,所以我知道它不应该占用那么多空间。

import java.awt.*;
import java.applet.*;

public class applettest extends Applet implements Runnable {

long lastFrame;

public void init() {
(new Thread(this)).start();
}

public void paint(Graphics g) {
g.drawString("Welcome to Java!!", 50, 60 );
}

public void run() {
while(true) {
// code here
repaint();

try{
// wait 16 milliseconds to cap frame rate to 60 fps
while (System.nanoTime() < lastFrame + 160000000) {
Thread.yield();
}

lastFrame = System.nanoTime();
}

catch(Exception e){}
}
}
}

最佳答案

尝试更换您的 busy wait

lastFrame = System.currentTimeMillis();

while(true)
{
repaint();

long msSleep = 16 - (System.currentTimeMillis() - lastFrame);
lastFrame = System.currentTimeMillis();

if(nsToSleep > 0)
{
Thread.sleep(msSleep);
}
else
{
Thread.yield(); // Only necessary if you want to guarantee that
// the thread yields the CPU between every frame
}
}

这将保证帧之间的时间至少 16 毫秒。如果您的渲染时间少于 16 毫秒,并且没有任何其他线程占用 CPU,它将以 60fps 的速度运行。

您的原始解决方案将强制执行最小 16 毫秒,但它必须保持 polling系统时间一遍又一遍(使用 CPU),直到经过必要的时间量。

注意事项:

关于java - 为什么这个简单的小程序占用了我 50% 以上的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com