def computationally_expensive_function(x):
xl = reversed(range(x)[1:])
y = x
for z in xl:
y = y * z
return y
In [16]: %timeit computationally_expensive_function(5)
1000000 loops, best of 3: 1.46 us per loop
In [17]: %timeit print computationally_expensive_function(5)
<lots of prints>
100 loops, best of 3: 1.87 ms per loop
打印到控制台的速度总是很慢。。。在
如果我取400的阶乘,那么每次迭代的计算时间将达到147uS,打印时间将达到3.5ms。这意味着,仅打印结果会导致它在小情况下的时间是100倍,在长的情况下是20倍。在
但是。。。与任何基于性能的东西一样,这并不意味着你真的有问题。如果它是在一个紧密的循环-非常糟糕。如果代码中每隔几分钟就调用一次,那么额外的1ms开销你甚至不会注意到。在
是的,因为参数在输出之前需要转换成字符串,这可能是一个代价高昂的操作。在
然而,使用
print
会导致另一个问题。一些WSGI容器,尤其是其中的mod WSGI,不喜欢默认发送到stdout的任何内容,因此每当发生这种情况时都会引发异常。您可以通过打印到stderr来解决这个问题,但是性能问题仍然存在。在相关问题 更多 >
编程相关推荐