python计时器

 1 #mytimer.py
 2 
 3 import time,sys
 4 
 5 if sys.platform[:3] == 'win':
 6     timefunc = time.clock
 7 else:
 8     timefunc = time.time
 9 
10 def trace(*args): pass
11 
12 def timer(func, *pargs, **kargs):
13     _reps = kargs.pop('_reps', 1000)
14     trace(func, pargs, kargs, _reps)
15     repslist = range(_reps)
16     start = timefunc()
17     for i in repslist:
18         ret = func(*pargs, **kargs)
19     elapsed = timefunc() - start
20     return (elapsed, ret)
21 
22 def best(func, *pargs, **kargs):
23     _reps = kargs.pop('_reps', 50)
24     best = 2 ** 32
25     for i in range(_reps):
26         (time, ret) = timer(func, *pargs, _reps=1, **kargs)
27         if time < best: best = time
28     return (best, ret)
 1 # timeseqs
 2 
 3 import sys, mytimer
 4 
 5 reps = 10000
 6 repslist = range(reps)
 7 
 8 def forLoop():
 9     res = []
10     for x in repslist:
11         res.append(abs(x + 10))
12     return res
13 
14 def listComp():
15     return [abs(x + 10) for x in repslist]
16 
17 def mapCall():
18     return list(map(lambda x: x + 10, repslist))
19 
20 def genExpr():
21     return list(abs(x + 10) for x in repslist)
22 
23 def genFunc():
24     def gen():
25         for x in repslist:
26             yield abs(x + 10)
27     return list(gen())
28 
29 print(sys.version)
30 
31 for tester in (mytimer.timer, mytimer.best):
32     print('<%s>' % tester.__name__)
33     for test in (forLoop, listComp, mapCall, genExpr, genFunc):
34         elapsed, result = tester(test)
35         print('-' * 35)
36         print('%-9s: %.5f => [%s...%s]' % (test.__name__, elapsed, result[0], result[-1]))

 

转载于:https://www.cnblogs.com/ekin/p/9400195.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值