我正在尝试计算我的程序的 FPS。尽管给定的最大 FPS 正在超限,但我无法解释原因。我将 MAX_FPS
设置为 60
进行测试,并且总是显示大约 63
。
{...}
int frameCount = 0;
long time = System.currentTimeMillis();
while(running) {
try {
{...} // do something
Thread.sleep(1000 / MAX_FPS);
frameCount++;
if (System.currentTimeMillis() - time >= 1000) {
{...} // display FPS w/ frameCount
frameCount = 0;
time = System.currentTimeMillis();
}
} catch (InterruptedException ex) {
System.err.println(ex.toString());
}
}
{...}
最佳答案
1000/60 在整数数学中是 16,1000/16 大约是 62.5。假设线程确实 hibernate 了接近 16 毫秒(可能会少一点),并且如果您的循环不需要那么长时间来执行迭代,并且如果倒数第二帧在 999 毫秒内完成,允许另一个更新潜入,那么循环可以实现每秒 63 次迭代是有道理的。
关于java - 超出最大 FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421016/