作者keitheis (无)
看板Python
标题Re: [问题] List扩编的处理速度...
时间Sat Apr 25 15:23:30 2009
题外话 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)
1F:推 Lucemia:推荐 XD 04/26 02:45