跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一个 Python 计时器封装的问题
未分類
1 4 月 2021

一个 Python 计时器封装的问题

一个 Python 计时器封装的问题

資深大佬 : LeeReamond 2

日常编程中,常常纠结于哪种实现方式运行速度更快,需要对一些简短的 codeblock 进行测试

python 虽然有一个成熟的 timeit 生态,但是 timeit 的缺点是提供测试结果比较严谨,准备测试环境相对来说复杂一些。而这类日常的测试则不需要严谨的对比,通常只需要定性,哪个大略上更快一些,但是希望更加易用,写一行代码立即跑出结果,所以 timeit 并不是十分符合需求。

所以实际开发中通常倾向于手写一些小工具来实现计时,一般思路是使用上下文管理器,在进入和退出指定 block 的时候统计运行时间即可,并且这种做法不会形成单独 scope,不影响上下文数据结构。

现在有一个问题就是,通常性能对比需要循环执行才能看出差异,所以要写很多多余代码,比如

with timeit():     for _ in range(1e8):         ... # 真正需要测试的代码段 

感觉每次都要重复写一个 for 循环挺麻烦的,有没有办法把这部分逻辑封装在对象里呢?

让使用上变成这种感觉

with timeit(1e8):     ... # 需要测试的代码段 

我是没什么思路,不知道怎么才能做到,有没有大佬分享一下想法

大佬有話說 (5)

  • 資深大佬 : liprais

    装饰器啊

  • 資深大佬 : charexcalibur

    装饰器

  • 主 資深大佬 : LeeReamond

    @liprais
    @charexcalibur

    装饰器方案比现在更拉胯,比如我有一个简单的需求,我有某个列表,需要把里面内容全部+2,完全用原生实现我要考虑是循环速度快还是列表生成器速度快,像下面这两段代码

    https://gist.github.com/GoodManWEN/23274b3bcdd6fbeb352bea9f44b85441

  • 資深大佬 : volvo007

    @LeeReamond 装饰器,是的,即使看到了你的抱怨,还是装饰器
    多写写习惯就好。话说回来,函数套函数怎么就难了

  • 主 資深大佬 : LeeReamond

    @volvo007 显然套函数需要先定义,再调用,写两行代码多于原先一行代码,这是其一。同时函数引入新的 scope,单独测试段落引起上下文定义缺失问题,这是其二,以上两点是否很难理解?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具