【发布时间】:2016-03-28 07:23:08
【问题描述】:
我正在优化我为圣诞节制作的一个 Java 小程序。我正在测试运行这些方法所需的时间,其中之一 Snow_AI 需要 1234567 纳秒才能运行。
问题在于计数器方法:
public boolean Count() {
if (CreateCnt > CreateTime) {
CreateCnt = 0;
return true;
} else {
CreateCnt = CreateCnt + 1;
}
return false;
}
这就是我打电话的方式:
MethTmr1 = System.nanoTime();
if (Snw.Count()) {
MethTmr = System.nanoTime();
Snw.Snow_AI();
MethTPS = 1000000000 / (System.nanoTime() - MethTmr);
}
try{
MethTPS1 = 1000000000 / (System.nanoTime() - MethTmr1);
}catch(Exception e){}
当我在 If 语句中移动计时调用时,它会将运行时间更改为小于 5000。有人知道为什么计数器方法会导致这种情况发生吗?
【问题讨论】:
-
愿意分享您是如何衡量的吗?请显示您衡量的两种方式。
-
Tmr = System.nanoTime();在方法调用之前和TPS = 1000000000 / (System.nanoTime() - Tmr);在调用之后。我用它来测量帧速率和每秒滴答声 -
你在哪里测量跑步时间?我只看到像 1/time 这样的代码会随着时间的增加而变低...?
-
在 TPS 变量中:
TPS = 1000000000 / (System.nanoTime() - Tmr);有效,我之前在课程项目测试中使用过。 -
但那是倒数的时间。越大越短。如果包含 if,您的代码看起来如何?
标签: java if-statement optimization