试验一些代码并做一些微观基准我刚刚发现在一个包含整数的字符串上使用float
函数比在同一个字符串上使用int
要快2倍。为什么float()比int()更快?
>>> python -m timeit int('1')
1000000 loops, best of 3: 0.548 usec per loop
>>> python -m timeit float('1')
1000000 loops, best of 3: 0.273 usec per loop
它测试int(float('1'))
其运行时间比裸int('1')
较短时会变得陌生了。
>>> python -m timeit int(float('1'))
1000000 loops, best of 3: 0.457 usec per loop
我测试了Windows 7下运行cPython 2.7.6和Linux Mint 16与cPython 2.7.6的代码。
我必须补充说只有Python 2受到影响,Python 3显示了运行时之间较小(不显着)差异的方式。
我知道我通过这样的微基准得到的信息很容易被滥用,但我很好奇为什么在函数的运行时有这样的区别。
我试图找到int
和float
的实现,但我无法在源代码中找到它。
无法复制的区别 '雅各布@ devbox:〜$蟒蛇-m timeit “INT(” 1 “)” 千万循环,最好的3:每循环0.104次使用' 'jakob @ devbox:〜$ python -m timeit“float(”1“)” 10000000循环,最好是3:每循环0.106 usec' –
@JakobBowyer:我可以,在Python 2.7中。在Python 3.3中,时间更加接近。 –
@MartijnPieters使用Python 2.7.3的Im,每次显示int都更快或接近完全相同。 –