我正在尝试优化一些代码,所以我想我应该仔细研究我的瓶颈所在。我有四个相互包装的函数,例如:
return f1(f2(f3(f4())))
所以我分别测试了每一个,也测试了一个整体。当我单独使用时,我基本上预先计算了前一个函数。但是,我假设它们加起来就是总时间。但他们没有,当我将它们结合起来时,它会显着增长。所以我决定从更小的角度来看待它。我写这个是为了测试
def f1():
return 2
def f2(num):
return num*num
def test():
for i in range(1000000):
f1()
def test2():
for i in range(1000000):
f2(2)
def test3():
for i in range(1000000):
f2(f1())
我返回测试为 0.085 秒,测试 2 为 0.125 秒,测试 3 为 0.171 秒。这让我在两个方面感到困惑。 1) 为什么 test3 不是 .21 秒,以及 2) 为什么它更短而不是我的问题变得更长?
最佳答案
生成列表“range(1000000)”需要大量时间(假设您使用的是 python 2.X)。在 test3 中,您只创建此列表一次。当您对时间求和时,您正在对创建列表的 2 次求和。
您可以使用探查器了解什么需要时间 http://docs.python.org/2/library/profile.html
关于python - 为什么嵌套时不添加函数的速度测试? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180277/