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

2023-11-03 02:58
文章标签 高效 是否 没有 else 更为

本文主要是介绍没有else的if是否更为高效?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

def get_sum(a,b):if a > b:return a+belse:return a+bdef get_sum_no_else(a,b):if a > b :return a+breturn 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       163           8 LOAD_FAST                0 (a)10 LOAD_FAST                1 (b)12 BINARY_ADD14 RETURN_VALUE5     >>   16 LOAD_FAST                0 (a)18 LOAD_FAST                1 (b)20 BINARY_ADD22 RETURN_VALUE24 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       168           8 LOAD_FAST                0 (a)10 LOAD_FAST                1 (b)12 BINARY_ADD14 RETURN_VALUE9     >>   16 LOAD_FAST                0 (a)18 LOAD_FAST                1 (b)20 BINARY_ADD22 RETURN_VALUE

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

  24 LOAD_CONST               0 (None)26 RETURN_VALUE

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

这篇关于没有else的if是否更为高效?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/335098

相关文章

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro