日常编程中,常常纠结于哪种实现方式运行速度更快,需要对一些简短的 codeblock 进行测试
python 虽然有一个成熟的 timeit 生态,但是 timeit 的缺点是提供测试结果比较严谨,准备测试环境相对来说复杂一些。而这类日常的测试则不需要严谨的对比,通常只需要定性,哪个大略上更快一些,但是希望更加易用,写一行代码立即跑出结果,所以 timeit 并不是十分符合需求。
所以实际开发中通常倾向于手写一些小工具来实现计时,一般思路是使用上下文管理器,在进入和退出指定 block 的时候统计运行时间即可,并且这种做法不会形成单独 scope,不影响上下文数据结构。
现在有一个问题就是,通常性能对比需要循环执行才能看出差异,所以要写很多多余代码,比如
with timeit():
for _ in range(1e8):
... # 真正需要测试的代码段
感觉每次都要重复写一个 for 循环挺麻烦的,有没有办法把这部分逻辑封装在对象里呢?
让使用上变成这种感觉
with timeit(1e8):
... # 需要测试的代码段
我是没什么思路,不知道怎么才能做到,有没有大佬分享一下想法
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.