試驗一些代碼並做一些微觀基準我剛剛發現在一個包含整數的字符串上使用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都更快或接近完全相同。 –