测试null和str相等比较的性能差别问题

到底是 str==null 快一些还是 null==str 快一些呢?
我们还是亲自测试一下看看吧,大家也可以看看代码,然后自己测试一下,不要人云亦云。包括我自己的结论也是这样,请有疑虑的人亲自测试,看结果。

先看测试代码

/**
* 测试传说中的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 个人认为,这个数量级的差距,我个人就不考虑了。呵呵呵
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值