是的
timeit标准库中的模块是检查这些内容的方式。例如:
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(9)'1000000 loops, best of 3: 0.446 usec per loopAmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(10)'1000000 loops, best of 3: 0.443 usec per loopAmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(10)'1000000 loops, best of 3: 0.453 usec per loopAmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(9)'1000000 loops, best of 3: 0.461 usec per loop
如您所见,在我的(第一天==旧==慢;-) Macbook Air上,该
&解决方案的重复速度比该
%解决方案快7到18纳秒。
timeit不仅告诉您更快的方法,而且告诉您执行速度快了多少(只需运行几次测试),这通常表明它极其重要(调用函数的开销大约为400时,您 真的
关心10纳秒的差异)吗??!-)…
自Knuth撰写以来已经有35年的时间了(使计算机更快地获得数量级的增长!),已经说服了程序员说微优化本质上是不相关的,这已被证明是不可能完成的任务。
我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。
正如他所解释的那样,这是引用自Hoare的一份更早的声明。我猜每个人都完全相信,他们的案件占剩下的3%!
因此,我们不停地重复“无关紧要”,我们(特别是蒂姆·彼得斯(Tim
Peters)应得的荣誉)放入标准的Python库模块中
timeit,这使得测量此类微基准变得轻而易举,从而至少让 一些
程序员说服自己,嗯,这种情况确实属于97%的人群!-)



