我需要确定if语句的执行时间。我制作了一段简单的代码来简化我的案例:
import org.joda.time.DateTime;
int a;
void setup() {
int a = 1;
}
void draw() {
if (a==1) {
System.out.println(" a is equal to 1");
}
else {
System.out.println(" a is not equal to 1");
}
}
在Processing中,draw方法将继续执行。所以它将不断检查a是否等于1.在我的程序中,a的值将根据Reactivision动态变化:如果检测到特定元素,a将等于1.如果不是,则它将等于0
我想知道if语句执行了多长时间(知道检测到特定元素的时间长度)。
如果我使用:
void draw() {
long startTime = System.nanoTime();
if (a==1) {
System.out.println(" a is equal to 1");
}
long estimatedTime = System.nanoTime() - startTime;
else {
System.out.println(" a is not equal to 1");
}
}
每次执行绘制方法以检查a是否等于1时,它会将startTime重置为当前时间,因此它将无法添加已经过去的时间。
我想过使用joda时间,但有没有办法让它“记录”if语句的执行时间?
答案 0 :(得分:1)
衡量Java中已用时间的标准方法是使用System.nanoTime()
作为基准。
long startTime = System.nanoTime();
if (a==1) {
System.out.println(" a is equal to 1");
}
long estimatedTime = System.nanoTime() - startTime;
您不应该使用System.currentTimeMillis(),请参阅此answer了解原因。
修改。要查看a == 1
:
import org.joda.time.DateTime;
int a;
long startTime = null;
void setup() {
int a = 1;
startTime = System.nanoTime();
}
void draw() {
if (a==1) {
System.out.println(" a is equal to 1");
}
else {
long estimatedTime = System.nanoTime() - startTime;
System.out.println(" a is not equal to 1" + "took" + estimatedTime);
}
}