You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义timeit函数的perf_counter计算结果异常,求问题原因

自定义timeit函数结果异常的原因

你的代码出现异常结果主要有两个问题:

  • 参数名不匹配:调用timeit时你传了n=100,但函数定义里的运行次数参数是num,这个关键字参数根本没被识别,实际执行的是默认的10000次循环。

  • 无副作用函数被解释器优化:你传入的lambda x: x<12是纯函数,没有任何副作用(比如修改外部状态、IO操作),而且循环中调用后没有使用返回值。Python解释器会自动跳过这种无意义的函数调用,相当于循环空转,所以耗时会异常偏低。

修正方案

  1. 调用时将n=100改为num=100,确保指定的运行次数生效:

    print(MyTimeit().timeit(lambda x: x<12, 10, num=100))
    
  2. 为了避免函数调用被优化,在循环中保留函数返回值:
    修改timeit方法的循环逻辑:

    def timeit(self, function: Callable, *parameters, num: int=10000):
        start = perf_counter()
        result = None
        if not parameters:
            for _ in range(num):
                result = function()
        else:
            for _ in range(num):
                result = function(*parameters)
        return perf_counter()-start
    

内容的提问来源于stack exchange,提问作者Jason Grace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:11:46