java - 检测 if 和 else 语句执行了多长时间

标签 java if-statement time processing

在处理中(基于java),只要程序运行,draw方法就会不断被执行。我正在尝试测量 if 语句中的条件为 true 的时间。 我有一个 if 语句:

if (matrix [3][5]== 3) {
      System.out.println("Closed");
}
else {
 System.out.println("Opened");
    } 

矩阵[3][5]的值动态变化(我使用Reivision,并且根据某些标记位置,该值会变化)。当我运行程序时,条件为假,所以我将:

opened
opened
...
opened

然后条件将为真,因此将打印:

closed
closed 
etc

在最终返回打开之前。 我想测量条件为真并打印关闭的时间,以及当它发生变化时,它保持打开状态的时间等:对于它返回打开或关闭的每次时间间隔,我想知道多长时间。

我在我的设置中启动了一个计时器:

void setup () {
startTime = System.nanoTime();
}

我可以在 if 语句中结束:

if (matrix [3][5]== 3) {
          System.out.println("Closed");
         long estimatedTime = System.nanoTime() - startTime;
         System.out.println("Was opened for"+ estimatedTime);
    }

所以我想知道它已经打开了多长时间。但是我怎样才能让它再次启动以测量它关闭、然后打开等来回的时间? 我想不通这个问题

最佳答案

您可以在 else 分支中设置新的开始时间。并且您应该设置一个额外的标志来指示最后的状态。

if (matrix [3][5]== 3) {
   System.out.println("Closed");
   if (isOpen)
   {
        isOpen=false;
        System.out.println("Runtime: " + (System.nanoTime() - startTime));
   }
}
else {
   if (!isOpen)
   {
        startTime=System.nanoTime();
        isOpen = true;
        System.out.println("Opened");
   }
}

事情是这样的。结果取决于开关频率。 “System.nanoTime()”可能会为不同的调用返回相同的时间。

关于java - 检测 if 和 else 语句执行了多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31731147/

相关文章:

time - 惰性序列求值所用的时间

Javascript - 在 SetTimeout 中加载图标

python - python3中有没有办法检查不止一件事?

java - 如何将 proto3 消息序列化为数组

java - 即使已初始化,也会出现 "Variable data not initialized"错误

java - n 叉树中多个节点的最低公共(public)祖先

php - 如果 mysql 查询为空或不存在?

javascript - 将数组值与对象进行比较

c# - 验证一个值是否为 C# 中的勾号

java - 没有可用的 org.springframework.web.client.RestOperations 类型的合格 bean