我試圖優化我的Python 2.7.x代碼。我將在for循環中執行一個操作,可能需要數百萬次,所以我希望它儘可能快。轉換字符串列表整數和Python代碼優化漂浮
我的操作是獲取10個字符串的列表並將它們轉換爲2個整數,然後將其轉換爲8個浮點數。
這是我嘗試的MWE:
import timeit
words = ["1"] * 10
start_time = timeit.default_timer()
for ii in range(1000000):
values = map(float, words)
values[0] = int(values[0])
values[1] = int(values[1])
print "1", timeit.default_timer() - start_time
start_time = timeit.default_timer()
for ii in range(1000000):
values = map(int, words[:2]) + map(float, words[2:])
print "2", timeit.default_timer() - start_time
start_time = timeit.default_timer()
local_map = map
for ii in range(1000000):
values = local_map(float, words)
values[0] = int(values[0])
values[1] = int(values[1])
print "3", timeit.default_timer() - start_time
1 2.86574220657
2 3.83825802803
3 2.86320781708
的一個代碼塊是我管理的最快的。 map
函數似乎比使用列表理解更快。但是仍然有一些冗餘,因爲我將所有內容映射到一個浮點數,然後將前兩個項目更改爲整數。
有沒有比我的代碼更快的東西?
爲什麼不讓地圖功能本地化,local_map = map
,提高第三塊代碼的速度?
在一般說明中,使用'%timeit'可能更適合性能測量... – Julien
您是否受限於Python 2? – Felk
@Felk沒錯的Python 2.7.x – innisfree