想測試一行**的執行時間,在python中比較方便,可以直接使用timeit:
>>> import timeit#執行命令
>>> t2 = timeit.timer('x=range(1000)')
#顯示時間
>>> t2.timeit()
10.620039563513103
#執行命令
>>> t1 = timeit.timer('sum(x)', 'x = (i for i in range(1000))')
#顯示時間
>>> t1.timeit()
0.1881566039438201
在ipython中直接使用
in [1]: from timeit import timeit as timeitin [2]: timeit('x=1')
out[2]: 0.03820111778328037
in [3]: timeit('x=map(lambda x:x*10,range(32))')
out[3]: 8.05639690328919
timeit 模組
# -*- coding: utf-8 -*-
#!/bin/env python
def test1():
n=0for i in range(101):
n+=i
return n
def test2():
return sum(range(101))
def test3():
return sum(x for x in range(101))
if __name__=='__main__':
from timeit import timer
t1=timer("test1()","from __main__ import test1")
t2=timer("test2()","from __main__ import test2")
t3=timer("test3()","from __main__ import test3")
print t1.timeit(10000)
print t2.timeit(10000)
print t3.timeit(10000)
print t1.repeat(3,10000)
print t2.repeat(3,10000)
print t3.repeat(3,10000)
結果如下
3.21831489756
0.109082858296
4.83077821343
[3.2328774327463403, 3.200496361967792, 3.219513164382626]
[0.11024445844373787, 0.10911708052280389, 0.10891761383080834]
[4.817947811802895, 4.892466221265554, 5.003930946530911]
利用time模組
# -*- coding: utf-8 -*-
#!/bin/env python
if __name__=='__main__':
from time import clock
start=clock()
for i in range(10000):
test()
finish=clock()
print (finish-start)/10000
執行結果為
0.00032365431221
其他方法
遇到複雜的程式,有很多效能分析工具可用。比如python的標準庫里的profile可以統計程式裡每乙個函式的執行時間,並且提供了多樣化的報表。
大多時候,需要做的是"怎麼用"!
python內建了timeit模組,通過它可以很簡單的計算出**執行時間,可以通過number引數控制**的執行次數,非常好用。
更詳細的實用方法可以參考:
>>> import timeit>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.8187260627746582
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.7288308143615723
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.5858950614929199
如何使用python timeit模組使用實踐
其實平時使用測試應用執行時間的情況 細算一下還真的很少。很久沒有做效能優化的工作,不管是cprofile還是timeit模組都已經生疏了很久沒有使用,我在以前的文章裡面有提到過cpfile的效能測試使用,但是一直沒有使用過這個更輕量級的執行時間測量庫進行過仔細實踐總結,今天就來總結一下。從最簡單的例...
用Python pip安裝模組
將scripts的路徑複製,新增到path 直接輸入 pip install 包名pip命令預設使用的是國外的pypi映象 pypi.python.org 安裝慢不說,有時甚至會導致出現超時等網路問題,造成安裝失敗。所以,使用國內的pypi映象,不失為一種加速pip安裝第三方包的好方法。國內的第三方...
用gdb除錯核心模組
請讀者試用 本人開發搜尋頁面 速谷歌 本文也即 linux device drivers ldd3的第四章debuging techniques的讀書筆記之六,但我們不限於此內容。這章看得比較慢,最近比較懶,而陷入了文件工作中,我決定這章節不會有之七,在之六打住。在使用者程式中,有很多編譯工具同提供...