我希望有人能幫助我解決這個問題。 我想測量排序算法。以下是我目前的做法:Python時機 - 必須有更好的方法!
M = 1000 # number of executions
N = [1000, 2000, 4000, 16000] # size of the list
L = [100, 1000, 2000,16000] # max element of the list
# timing:
print 'Number of executions: %i' % (M)
print '-'*80
print '\tL\N\t|\t%i\t|\t%i\t|\t%i\t|\t%i' % (N[0], N[1], N[2], N[3])
print '-'*80
for l in L:
print '\t%i\t' % l,
for n in N:
t = 0
for m in xrange(M):
A = [random.randint(0,l-1) for r in xrange(n)] # generates an n long random list
t0 = time.clock()
pass # sort function call goes here
t1 = time.clock()
t += (t1-t0)
print '|\t%0.3f\t' % ((t*1000.0)/M), # avg time
print
print '-'*80
這個空的測試大約需要4分鐘。我很感激任何關於如何使其更快的建議。
乾杯
編輯: 雷夫凱特勒的提示後,我想出了這個:
def sorting(LST):
pass
if __name__ == "__main__" :
M = 1000
N = [1000, 2000, 4000, 16000]
L = [100, 1000, 2000,16000]
print 'Number of executions: %i' % (M)
print '-'*80
print '\tL\N\t|\t%i\t|\t%i\t|\t%i\t|\t%i' % (N[0], N[1], N[2], N[3])
print '-'*80
for l in L:
print '\t%i\t' % l,
for n in N:
#------------------------
t = timeit.Timer('sorting([random.randint(0,l-1) for r in xrange(n)])', 'from __main__ import sorting, n, l, random')
#------------------------
print '|\t%0.3f\t' % (t.timeit(M)/M), # avg time
print
print '-'*80
不幸的是,越來越慢。我究竟做錯了什麼?
並且一定要在定時功能之外設置您的測試數據! – 2010-11-11 22:48:20
@MarkRansom同意。 – 2010-11-11 22:54:52
感謝您在時間表上的提醒! – Stiggo 2010-11-12 11:12:21