发新话题

测试传说中的null==str和str==null的性能差别比较问题

/**
 * 测试传说中的null==str的性能问题。<br>
 * 据说 null==str比str==null的性能高一些。<br>
 * 我们来测试一下看看
 * 
 * @author 老紫竹 JAVA世纪网(java2000.net)
 * 
 */
public class Test {
  static int TIMES = 1000000000;
  static String str = "JAVA2000.net";

  public static void main(String[] args) {
    long t1;
    long t2;
    // 测试10轮

    for (int i = 0; i < 10; i++) {
      t1 = test1();
      t2 = test2();
      System.out.printf("str == null:%13d\t", t1);
      System.out.printf("null == str:%13d\t", +t2);
      System.out.printf("Diff=%13d", t2 - t1);
      System.out.println();
      // 顺序颠倒一下
      t2 = test2();
      t1 = test1();
      System.out.printf("str == null:%13d\t", t1);
      System.out.printf("null == str:%13d\t", +t2);
      System.out.printf("Diff=%13d", t2 - t1);
      System.out.println();
    }

  }

  public static long test1() {
    long t1 = System.nanoTime();
    for (int i = 0; i < TIMES; i++) {
      if (str == null) {
        ;
      }
    }
    return System.nanoTime() - t1;
  }

  public static long test2() {
    long t1 = System.nanoTime();
    for (int i = 0; i < TIMES; i++) {
      if (null == str) {
        ;
      }
    }
    return System.nanoTime() - t1;

  }
}


运行结果
str == null: 1331211649 null == str: 1306476382 Diff= -24735267
str == null: 1325049972 null == str: 1310683341 Diff= -14366631
str == null: 1321184396 null == str: 1314800066 Diff= -6384330
str == null: 1308572459 null == str: 1310631659 Diff= 2059200
str == null: 1322850530 null == str: 1312672142 Diff= -10178388
str == null: 1310835595 null == str: 1312089385 Diff= 1253790
str == null: 1324557172 null == str: 1311582059 Diff= -12975113
str == null: 1311757780 null == str: 1329927686 Diff= 18169906
str == null: 1325011978 null == str: 1305032064 Diff= -19979914
str == null: 1325790010 null == str: 1309495201 Diff= -16294809
str == null: 1308165144 null == str: 1316338529 Diff= 8173385
str == null: 1321638644 null == str: 1310619646 Diff= -11018998
str == null: 1305769309 null == str: 1306789550 Diff= 1020241
str == null: 1324110187 null == str: 1307757550 Diff= -16352637
str == null: 1311276712 null == str: 1309109957 Diff= -2166755
str == null: 1323087432 null == str: 1308201741 Diff= -14885691
str == null: 1305018096 null == str: 1304627264 Diff= -390832
str == null: 1326120778 null == str: 1314136852 Diff= -11983926
str == null: 1312848141 null == str: 1306828382 Diff= -6019759
str == null: 1319538097 null == str: 1313048725 Diff= -6489372

总结
1 测试10亿次,最大的差别在0.024秒
2 整体上 null==str的速度快于str==null
3 个别情况则正好相反
4 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵!
快乐渡过每一天,减肥坚持每一天



编辑 回复 快速回复 TOP
竹子太专业了,谢谢...
Everyone is No 1~``
编辑 回复 快速回复 TOP
太专业了~
编辑 回复 快速回复 TOP
运行结果:
str == null: 2314616308 null == str: 2318826047 Diff= 4209739
str == null: 2306811256 null == str: 2306030044 Diff= -781212
str == null: 2313359611 null == str: 2312365102 Diff= -994509
str == null: 2318578592 null == str: 2308625835 Diff= -9952757
str == null: 2301785278 null == str: 2306853036 Diff= 5067758
str == null: 2308560910 null == str: 2325634888 Diff= 17073978
str == null: 2309267126 null == str: 2309060176 Diff= -206950
str == null: 2308494895 null == str: 2309575643 Diff= 1080748
str == null: 2308708128 null == str: 2323353983 Diff= 14645855
str == null: 2305932143 null == str: 2311307263 Diff= 5375120
str == null: 2307876165 null == str: 2303670688 Diff= -4205477
str == null: 2312117887 null == str: 2308025160 Diff= -4092727
str == null: 2306163463 null == str: 2306360452 Diff= 196989
str == null: 2301612885 null == str: 2303717046 Diff= 2104161
str == null: 2303068047 null == str: 2303697374 Diff= 629327
str == null: 2301648058 null == str: 2305029782 Diff= 3381724
str == null: 2306898842 null == str: 2312458979 Diff= 5560137
str == null: 2301611466 null == str: 2306820138 Diff= 5208672
str == null: 2310011820 null == str: 2304040745 Diff= -5971075
str == null: 2300227086 null == str: 2304612762 Diff= 4385676
编辑 回复 快速回复 TOP
.不.要.轻.信.你.听.到.的.每.件.事..不.要.花.光.你.的.所.有..不.要.想.睡.多.久.就.睡.多.久.]无.论.何.时.说.“对.不.起”请.看.着.对.方.的.眼.睛。] 永.远.不要.忽.视.别.人.的.梦.想.。]. .永.远.不.要.以.貌.取.人..。慢.慢.地.说,但.要.迅.速.地.想。..总.有.一.种.平.凡.,让.我.们.泪.流.满.面..
编辑 回复 快速回复 TOP
发新话题