`

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

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

//标准的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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics