测时间函数示例

'''
测时间函数示例
'''
import sys
import time

def timer(func, *pargs, **kargs):
    _reps = kargs.pop('_reps', 1000)
    start = time.perf_counter()
    for i in range(_reps):
        ret = func(*pargs, **kargs)
    elapsed = time.perf_counter() - start
    return (elapsed, ret)

def best_timer(func, *pargs, **kargs):
    _reps = kargs.pop('_reps', 50)
    best = 2 ** 32
    for i in range(_reps):
        (time, ret) = timer(func, _reps=1, *pargs, **kargs)
        if time < best: best = time
    return (best, ret)

def forloop():
    res = []
    for x in repslist:
        res.append(bin(x))
    return res

def listcomp():
    return [bin(x) for x in repslist]

def mapcall():
    return list(map(bin, repslist))

def genexpr():
    return list(bin(x) for x in repslist)

def genfunc():
    def gen():
        for x in repslist:
            yield bin(x)
    return list(gen())

repslist = range(-10000, 10000)
print(sys.version)
for tester in (timer, best_timer):
    print(f'<{tester.__name__}>')
    for test in (forloop, listcomp, mapcall, genexpr, genfunc):
        elasped, result = tester(test)
        print('-' * 35)
        print(f'{test.__name__:9s} {elasped:.5f} => [{result[0]}...{result[-1]}]')

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值