没有else的if是否更为高效?

在python中,探讨if else和if 的效率问题。
比如下面2个python 自定义函数

def get_sum(a,b):
	if a > b:
		return a+b
	else:
		return a+b

def get_sum_no_else(a,b):
	if a > b :
		return a+b
	return a+b

通过引入 dis模块,进行字节码编译,分别得到如下结果:

  • dis.dis(get_sum)
 dis.dis(get_sum)                                                                                                                                                                 
  2           0 LOAD_FAST                0 (a)
              2 LOAD_FAST                1 (b)
              4 COMPARE_OP               4 (>)
              6 POP_JUMP_IF_FALSE       16

  3           8 LOAD_FAST                0 (a)
             10 LOAD_FAST                1 (b)
             12 BINARY_ADD
             14 RETURN_VALUE

  5     >>   16 LOAD_FAST                0 (a)
             18 LOAD_FAST                1 (b)
             20 BINARY_ADD
             22 RETURN_VALUE
             24 LOAD_CONST               0 (None)
             26 RETURN_VALUE

  • dis.dis(get_sum_no_else)
dis.dis(get_sum_no_else)                                                                                                                                                         
  7           0 LOAD_FAST                0 (a)
              2 LOAD_FAST                1 (b)
              4 COMPARE_OP               4 (>)
              6 POP_JUMP_IF_FALSE       16

  8           8 LOAD_FAST                0 (a)
             10 LOAD_FAST                1 (b)
             12 BINARY_ADD
             14 RETURN_VALUE

  9     >>   16 LOAD_FAST                0 (a)
             18 LOAD_FAST                1 (b)
             20 BINARY_ADD
             22 RETURN_VALUE

可以看到,没有else少了2段字节码:

  24 LOAD_CONST               0 (None)
  26 RETURN_VALUE


所以在字节码越少效率越高的前提下,if的效率比if else的效率更高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值