确定if语句最后使用joda时间的多长时间(处理)

时间:2015-07-22 18:51:47

标签: java processing jodatime

我需要确定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语句的执行时间?

1 个答案:

答案 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); 
}

}