使用 joda time 确定 if 语句持续多长时间(处理中)

Determine how long a if statement last using joda time (Processing)

我需要确定 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"); 
}

}

每次执行 draw 方法检查 a 是否等于 1 时,它都会将 startTime 重置为当前时间,因此无法添加已经过去的时间。

我想到了使用 joda 时间,但是有没有办法让 "record" if 语句执行多长时间?

在 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); 
}

}