语句"if"交换条件



考虑这个代码片段

import java.util.Date;
  class Test {
     public static void main(String[] args) {
    Date date = null;
    long startTime = System.currentTimeMillis();
    if(date == null) {
        System.out.println("null == date");
    }else {
        System.out.println("date found "+date);
    }
      long stopTime = System.currentTimeMillis();
      long elapsedTime = stopTime - startTime;
      System.out.println(elapsedTime);
    }
}

在我使用 date==null 的情况下,我想知道如果我选择写 null==date 是否会降低时间复杂度,反之亦然

PS-对于这两种情况,我的代码都产生0的输出,但是如果代码很复杂并且操作繁重怎么办?

date == nullnull == date几乎完全相同。

在您的特定情况下,它们之间在速度和观察到的行为方面都没有区别。

你得到了0,因为现代计算机非常快,执行该计算所需的时间不到毫秒。

PS:如果你真的想测量它需要多长时间,你必须执行它数十万次,并将测量的时间除以执行计数。

PPS:在Java中,微基准测试并不容易,因为你已经考虑了很多东西,比如JVM内部行为,编译器优化,GC,JIT等等。

编辑我错了它们是完全等效的,因为此代码将被编译为使用IFNONNULL指令。

相关内容

  • 没有找到相关文章

最新更新