我想計算我的程序的FPS。儘管給定的最大FPS超出範圍,我無法解釋原因。我用MAX_FPS
設置爲60
進行測試,我總是得到約63
顯示。超過最大FPS
{...}
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。假設線程也睡了接近16毫秒(也許少一些),如果你的循環不會花這麼長時間執行迭代,如果在999毫秒倒數第二幀成爲通過允許另一個更新忙裏偷閒,那麼這個循環經常可以每秒達到63次迭代是有意義的。編輯:我只是做出這個答案。 – NESPowerGlove 2015-02-09 22:57:38
@Astraioz - 你肯定需要'1_000_000_000'幾納秒? (或者使用'TimeUnit'做轉換) – 2015-02-09 23:13:29