Python:使用相同的参数多次调用同一个函数,还是将结果保存为中间值?

标签 python performance

如果我有一个函数

def bar(n):
    return n**100

之间会有性能差异吗?
for i in range(1000000):
    x = bar(30)
    # use x for something

x = bar(30)
# use x for something 1,000,000 times

不知道解释器有没有针对这种情况优化过?

最佳答案

CPython 编译器只做很少的简单 peephole optimisations ,但它肯定永远不会优化函数调用——它怎么知道函数是否有副作用呢?在编译时,它通常甚至不知道名称 bar 指的是哪个函数,并且名称绑定(bind)可能随时更改。

如有疑问,只需自己测量性能 -- timeit模块是你的 friend 。

关于Python:使用相同的参数多次调用同一个函数,还是将结果保存为中间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547007/

相关文章:

javascript - PhoneGap 应用性能评估

javascript - Pagespeed 洞察报告分析

javascript - 为什么对 javascript 字符串进行排序比对数字排序更快?

sql - 表别名如何影响性能?

javascript - 使用 Python/Flask 迭代 HTML 模板中的 URL 列表

python - 使用 OpenCV 和 Python 在视频上应用热图

c++ - 这些代码与性能有关吗?一个非常快,另一个超过时间限制

python - 使用python的窗口截图

python - pyaudio 流中的数据是什么意思?

python - Python中Powerset的时间复杂度