绝大多数的程序员喜欢使用if判断,但是真的效率高吗?还是其它的,可能只会用if呢!我们今天就具体测一测,用事实说话,测试量100W:
本文采用的是【Python】语言进行测试,后续会有【C#】
switch效率测试代码:
import random import timeit #模拟switch def switch(num): return { 0 : 1, 1 : 2, 2 : 3, 3 : 4, 4 : 5, 5 : 6, 6 : 7, 7 : 8, 8 : 9, 9 : 0 }.get(num,None) #一百万次 def testSwitch(): count=1000000 for x in range(count): ra=random.randint(0,10) switch(ra) start =timeit.default_timer() testSwitch() end = timeit.default_timer() print('耗时: %s Seconds'%(end-start))
100W次swtich判断,消耗时间1641ms
if效率测试代码:
import random import timeit #一百万次 def testSwitch(): count = 1000000 a = 1 for x in range(count): ra = random.randint(0,10) if x == 0: a = 0 elif x == 1: a = 1 elif x == 2: a = 2 elif x == 3: a = 3 elif x == 4: a = 4 elif x == 5: a = 5 elif x == 6: a = 6 elif x == 7: a = 7 elif x == 8: a = 8 else : a = 9 start = timeit.default_timer() testSwitch() end = timeit.default_timer() print('耗时: %s Seconds' % (end - start))
100W次if判断,消耗时间1520ms
结论:
综上实验可得:
1、python是没有提供switch开关判断的,所以模拟出来的效果一般
2、python中没的选,只能用if判断,最多还有一个三元运算符
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
想测试的自己可以测试一下,意义不大。python本身就是消耗资源最大的编程语言。