我想知道有什么工具可以在循环展开方面优化我的程序,我该如何使用它?
我有以下python代码:
for i in range(0, 1000):
a = a * 10 + a%4 + i
for j in range(0, 1000):
j = j + a
for b in range(0, 1000):
result = j + b我想优化这个代码段,这样我就可以试着理解一点循环展开。对于Python,我想知道一个C优化器。
发布于 2011-12-14 21:48:17
a = 30
for i in range ( 0,1000 ) :
a = a * 10 + a%4 + i可以重写为:
a = reduce(lambda a,b: a * 10 + a%4 + b, xrange(1000), 30)所需时间大致相同(在我的计算机上约为4ms)。
for j in range ( 0, 1000 ) :
j = j + a这没有多大意义。您在0-999上迭代j,并且每次都向其中添加巨大的a,这会立即被忘记,因为将采用下一个j。它可以重写为:
j = 999 + afor b in range ( 0 , 1000 ) :
result = j + b也没什么意义。相当于:
result = j + 999 发布于 2011-12-14 21:53:46
如果您对代码的性能不满意,并对其进行了分析,并且发现像这样的低级循环是一个瓶颈,那么您应该能够通过使用cython将代价高昂的代码转换为C扩展来极大地提高代码的速度。此外,如果您使用的是Python2.x,则应该使用xrange而不是range。
https://stackoverflow.com/questions/8505417
复制相似问题