Так что im делает игру в java, и у меня есть проблема. Таймер использует много ресурсов процессора (около 30%), и это, вероятно, не должно. Когда я пытаюсь поместить рендер в таймер, все работает нормально. А иногда, ничего не меняя он работает отличноjava таймер игры, используя массу ресурсов
public static synchronized void run(){
long last = System.nanoTime();
double npt = Time.nano/tps; //one second/ticks
double delta = 0;
//long now;
long pfmLast = System.currentTimeMillis();
long pfmSpm = Time.nano * spu;
long pfmDelta = 0;
int pfmUpdates = 0;
long pfmNow;
long fpsLast = System.nanoTime();
double npf = Time.nano/fps; //one second/ticks
double fpsDelta = 0;
//long fpsNow;
int frames = 0;
Handler.init();
try {
en = new Entity(ImageIO.read(new File("res/robot.png")), 1, 1, false);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while(running){
long now = System.nanoTime();
delta += (now - last)/npt;
last = now;
while(delta >= 1){
pfmUpdates++;
Handler.update();
delta -= 1;
}
long fpsNow = System.nanoTime();
fpsDelta += (fpsNow - fpsLast)/npf;
fpsLast = fpsNow;
while(fpsDelta >= 1){
frames++;
render();
Handler.render();
fpsDelta -= 1;
}
if(loggingPerformance){
pfmNow = System.currentTimeMillis();
pfmDelta += pfmNow-pfmLast;
pfmLast = pfmNow;
if(pfmDelta >= 1000){
System.out.println(pfmUpdates + ", " + frames);
frames = 0;
pfmUpdates = 0;
pfmDelta=0;
}
}
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*fpsNow = System.currentTimeMillis();
fpsDelta += fpsNow - fpsLast;
fpsLast = fpsNow;
if(fpsDelta >= npf){
//Handler.render();
frames++;
fpsDelta -= npf;
}*/
}
}
Какая игра? Какая библиотека графического интерфейса? Меня зовут петли, поскольку они будут записывать циклы процессора. –
Вы пробовали профилировать свое приложение? –
@HovercraftFullOfEels не использует каких-либо либералов, и на данный момент его единственные объекты рисования на изображении, которое тянется к холсту –