在Python中,“while”和“for xrange”哪个更快?
我们可以像这样进行数字迭代:
for i in xrange(10):
print i,
还有C风格的写法:
i = 0
while i < 10:
print i,
i = i + 1
是的,我知道,第一种写法出错的可能性更小,更符合Python的风格,但它的速度够快吗,跟C风格的相比?
顺便说一下,我来自C++的世界,对Python还很陌生。
7 个回答
3
第一个。
你的意思是,开发得更快,对吧?
补充说明:其实没关系,现在的机器都很快,所以在找到性能瓶颈之前,去考虑那些微小的优化是没有意义的,最好先用详细的分析工具来找出问题所在。
15
谁在乎呢?说真的。如果你想知道,可以用timeit这个工具包(你可以在命令行里用 -m 来调用它)。
不过这根本不重要,因为差别微乎其微。而且一般来说,如果你想要速度快,Python并不是你会选择的语言。
17
我敢肯定,while
版本会更慢。因为在每次循环的时候,Python都需要查找整数对象的加法操作,这并不是纯粹的C语言,虽然它看起来像是!
如果你想要一个更符合Python风格的版本,可以使用:
print " ".join(str(i) for i in xrange(10))
补充:我的时间测试结果是这样的。这只是一个简单的循环,没有打印,只是为了让你看到在Python中写“i += 1”等操作的开销。
$ python -mtimeit "i=0" "while i < 1000: i+=1"
1000 loops, best of 3: 303 usec per loop
$ python -mtimeit "for i in xrange(1000): pass"
10000 loops, best of 3: 120 usec per loop