timeit模組可以用來測試一小段python**的執行速度。
class timeit.timer(stmt='pass', setup='pass', timer=)
timer是測量小段**執行速度的類。
stmt引數是要測試的**語句(statment);
setup引數是執行**時需要的設定;
timer引數是乙個定時器函式,與平台有關。
timeit.timer.timeit(number=1000000)
timer類中測試語句執行速度的物件方法。number引數是測試**時的測試次數,預設為1000000次。方法返回執行**的平均耗時,乙個float型別的秒數。
pop操作測試def
test1
(): l =
for i in range(1000):
l = l + [i]
deftest2
(): l =
for i in range(1000):
deftest3
(): l = [i for i in range(1000)]
deftest4
(): l = list(range(1000))
from timeit import timer
t1 = timer("test1()", "from __main__ import test1")
print("concat ",t1.timeit(number=1000), "seconds")
t2 = timer("test2()", "from __main__ import test2")
t3 = timer("test3()", "from __main__ import test3")
print("comprehension ",t3.timeit(number=1000), "seconds")
t4 = timer("test4()", "from __main__ import test4")
print("list range ",t4.timeit(number=1000), "seconds")
# ('concat ', 1.7890608310699463, 'seconds')
# ('comprehension ', 0.05671119689941406, 'seconds')
# ('list range ', 0.014147043228149414, 'seconds')
測試pop操作:從結果可以看出,pop最後乙個元素的效率遠遠高於pop第乙個元素x = range(2000000)
pop_zero = timer("x.pop(0)","from __main__ import x")
print("pop_zero ",pop_zero.timeit(number=1000), "seconds")
x = range(2000000)
pop_end = timer("x.pop()","from __main__ import x")
print("pop_end ",pop_end.timeit(number=1000), "seconds")
# ('pop_zero ', 1.9101738929748535, 'seconds')
# ('pop_end ', 0.00023603439331054688, 'seconds')
python程式效能分析
目錄 python m cprofile o output file s sort order m module myscript.py o將結果輸出到檔案而不是stdout s排序狀態,選擇那些引數排序,常用 tottime m作為乙個模組而不是指令碼,python3.7的cprofile中有,p...
python如何分析程式效能
when use profiler?有時候你覺得程式執行很慢,想對程式進行優化,但是你又不知道哪部分程式入手,這時候你就需要對程式整體效能進行分析,看看速度慢主要是哪部分程式導致的 why use cprofile?cprofile,乙個python程式效能分析模組。其實python有兩個profi...
優化程式效能
編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...