较短的代码是不是有明显的性能优势?

Posted

技术标签:

【中文标题】较短的代码是不是有明显的性能优势?【英文标题】:Is there an explicit performance benefit in shorter code?较短的代码是否有明显的性能优势? 【发布时间】:2020-05-08 01:55:44 【问题描述】:

在 Python 中压缩代码非常有用。它经常省略多个字符,在某些情况下甚至可能省略多行,并且在代码打高尔夫球中绝对必不可少。但是,这种代码的缩短对性能有影响吗?有可衡量的好处吗?

说出这个基本的假设代码,

import math

number = '5'
variable = math.ceil(float(number))
print(variable)

看起来运行良好、被重构或压缩成

from math import ceil

print(ceil(float('5.1')))

两个程序都运行良好,没有错误,但为什么前者在生产中不太常见?第一个代码 sn -p 看起来更容易阅读,看起来更简单。单行代码与第二部分中的详细形式相比是否有性能优势?

【问题讨论】:

在性能方面,您可以使用内置的 timeit 模块,或者您的代码的内存配置文件来自己查看结果。至于您可能会看到其中一个的原因,这将高度依赖于环境和编码人员的偏好。就个人而言,我会使用前者来提高可读性,如果我需要重用变量。如果我只需要打印一个结果并保存内存分配,我会使用后者(在代码中使用 cmets) 【参考方案1】:

我不太确定计算机的内部工作原理以及它如何运行代码,但我相信由于引入了一个新变量,第一个计算机的运行速度会稍微慢一些。我怀疑它会引起注意。但是再说一遍,我对此一无所知,如果我错了,请告诉我并删除它。

第一个有 77 个字节,而第二个只有 48 个字节,因此运行它所需的时间会略有改善。

【讨论】:

这将是一个更好的评论而不是一个答案。见Why do I need 50 reputation to comment? What can I do instead? 我同意在给出的示例中性能差异可以忽略不计。话虽如此,将数百万个这样的小效率低下写入一个大型代码库,它就会加起来。

以上是关于较短的代码是不是有明显的性能优势?的主要内容,如果未能解决你的问题,请参考以下文章

长整数在插入较短的列时进行转换,而不是截断。为啥?公式是啥?

从较短的字符串打印字符后,程序停止从两个字符串一次打印一个字符

VBA筛选和复制-较短的例程?

我如何编写这个较短的 jquery?

局部常数太多。使用较短的程序错误

ECMAScript 6 中较短的类初始化