Re: [問題] List擴編的處理速度...
題外話 XD
要測微效能的差異,可考慮 python 內建(總是如此啊)更準確的 timeit 模組
使用方式如:
import timeit
run_test1 = '''
import testit
testit.test1(testit.al, testit.bl)
'''
run_test2 = '''
import testit
testit.test2(testit.al, testit.bl)
'''
run_test3 = '''
import testit
testit.test3(testit.al, testit.bl)
'''
al = []
bl = []
for i in range(1000):
al.append(i)
bl.append(999 -i)
def test1(al, bl):
al = al + bl
def test2(al, bl):
al.extend(bl)
def test3(al, bl):
al += bl
if __name__ == '__main__':
times = 100000
t1 = timeit.Timer(stmt=run_test1)
print "%.8f sec/pass" % (t1.timeit(number=times)/times)
t2 = timeit.Timer(stmt=run_test2)
print "%.8f sec/pass" % (t2.timeit(number=times)/times)
t3 = timeit.Timer(stmt=run_test3)
print "%.8f sec/pass" % (t3.timeit(number=times)/times)
# See also: http://docs.python.org/library/timeit.html
附帶這個測試的 output 作為參考
0.00002528 sec/pass
0.00002075 sec/pass
0.00002029 sec/pass
PS. 就算這麼做,還是要跑第二次之後才比較接近實際上想看到的差異
第一次
% python testit.py
0.00002639 sec/pass
0.00002135 sec/pass
0.00002575 sec/pass
第二次
% python testit.py
0.00002557 sec/pass
0.00002103 sec/pass
0.00001995 sec/pass
第三次
% python testit.py
0.00002528 sec/pass
0.00002075 sec/pass
0.00002029 sec/pass
--
keitheis ")
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.121.154.205
※ 編輯: keitheis 來自: 122.121.154.205 (04/25 15:29)
※ 編輯: keitheis 來自: 122.121.154.205 (04/25 15:33)
推
04/26 02:45, , 1F
04/26 02:45, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 5 之 9 篇):