优化工具
我想知道有没有什么工具可以帮助我优化程序,特别是在循环展开方面,我该怎么使用它呢?
我有以下这段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语言的优化工具。
3 个回答
3
如果你对自己代码的运行速度不满意,已经分析过代码,发现像这种低级的循环是瓶颈,那么你可以通过使用 cython 来大幅提升代码的速度,把那些耗时的部分转成C语言的扩展。此外,如果你在使用python 2.x版本,建议用 xrange
代替 range
。
4
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)
在我电脑上大约需要相同的时间(大约4毫秒)。
for j in range ( 0, 1000 ) :
j = j + a
这没什么意义。你在对j
进行0到999的循环,每次都把你的大数a
加到它上面,但这个数很快就被忘掉了,因为下一个j
又来了。可以改写成:
j = 999 + a
for b in range ( 0 , 1000 ) :
result = j + b
这也没什么意义。它等同于:
result = j + 999