一个 Python 计时器封装的问题
資深大佬 : LeeReamond 2
日常编程中,常常纠结于哪种实现方式运行速度更快,需要对一些简短的 codeblock 进行测试
python 虽然有一个成熟的 timeit 生态,但是 timeit 的缺点是提供测试结果比较严谨,准备测试环境相对来说复杂一些。而这类日常的测试则不需要严谨的对比,通常只需要定性,哪个大略上更快一些,但是希望更加易用,写一行代码立即跑出结果,所以 timeit 并不是十分符合需求。
所以实际开发中通常倾向于手写一些小工具来实现计时,一般思路是使用上下文管理器,在进入和退出指定 block 的时候统计运行时间即可,并且这种做法不会形成单独 scope,不影响上下文数据结构。
现在有一个问题就是,通常性能对比需要循环执行才能看出差异,所以要写很多多余代码,比如
with timeit(): for _ in range(1e8): ... # 真正需要测试的代码段
感觉每次都要重复写一个 for 循环挺麻烦的,有没有办法把这部分逻辑封装在对象里呢?
让使用上变成这种感觉
with timeit(1e8): ... # 需要测试的代码段
我是没什么思路,不知道怎么才能做到,有没有大佬分享一下想法
大佬有話說 (5)