2016-04-23 15 views
1

當我看到500lines,它說:爲什麼python中的本地函數更快以及如何證明?

在本地放置的(方法),爲我們節省了時間另一個小片,因爲當地人比內建更快。

然後我寫類似下面的測試:

import timeit 

if __name__ == '__main__': 
    _r = 5 
    _n = 1000000 
    s = str 

    print(timeit.repeat("s(112)", setup="from __main__ import s", repeat=_r, number=_n)) 
    print(timeit.repeat("str(112)", repeat=_r, number=_n)) 

# 1.test s,then str 
# [0.22136712074279785, 0.18772411346435547, 0.16153311729431152, 0.15581107139587402, 0.1546940803527832] s 
# [0.19046807289123535, 0.1990509033203125, 0.19870710372924805, 0.18471217155456543, 0.1823439598083496] str 

# 2. test str,then s 
# [0.2088918685913086, 0.18737316131591797, 0.1878829002380371, 0.20372295379638672, 0.20828890800476074] str 
# [0.15288996696472168, 0.158311128616333, 0.16825199127197266, 0.15237903594970703, 0.152756929397583] s 

任何人都可以解釋這種 和爲什麼s第一重複花費更多的時間? 以及我如何調試到函數調用?

+0

強調這個詞很小。這種節省時間是不值得花費的。 – e4c5

回答

1

您是否閱讀過上一段?

str的快捷鍵也是一個微優化。 Python中的名稱可以是 對於函數是本地的,對於模塊是全局的,或者對於Python是內置的。 查找本地名稱比查找全球或內置的 快。我們已經習慣了str是一個可用的內建函數,但是Python每次使用它時都必須查找名稱str。把它放在本地節省了我們另一小部分時間 ,因爲當地人比建築物快。

聲明:對索賠的準確性沒有要求。

相關問題