问号表达式和if-else方式的对比

某次听数字图像的老师说到关于ifelse其实也是蛮消耗资源的,关键就在于,我们的编译器在编译的时候要去维护一张table。而问号表达式其实也可以和ifelse做替换的。无聊之下就想来瞧瞧。效率对比 :wink:
有啥缺陷,请指正。


//标准的ifelse方式
public static long standardIfElseTest(long L) {
if (L < 10)
return L * 100;
else
return L * 10;
}


//问号表达式
public static long ternaryIfElseTest(long L) {
return L < 10 ? L * 100 : L * 10;
}


//main方式测试一下
public static void main(String[] args) {
long start;
long end;
// 计算第一个方法运行时间:标准的if、else方式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
standardIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("standard if else:" + ((long) end - start));
// 重新计算第二个方法时间:问号表达式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
ternaryIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("question:" + ((long) end - start));
}

运行数据:
1285046936531
standard if else:7625
1285046944156
question:6594
两个方法的执行其实是会多少变化的。些微变化取决于运行时候和内存的情况。
不过standard和question的大小还是明显在1000以上的差异,也就是1s,second
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值