Python单条语句计时

来源:千锋教育
发布时间:2023-11-07 09:24:00
分享

上下文管理器和timeit.timeit()方法也适合单条语句计时。除此之外,也可通过命令行执行timeit计时,命令选项详见官方帮助。

通过命令行执行timeit计时,可方便地测量和对比相同功能不同实现表达式的性能:

E:\PyTest>python-mtimeit-r5"'-'.join(str(n)forninrange(100))"

10000loops,bestof5:32.8usecperloop

E:\PyTest>python-mtimeit-r5"'-'.join([str(n)forninrange(100)])"

10000loops,bestof5:29.8usecperloop

E:\PyTest>python-mtimeit-r5"'-'.join(map(str,range(100)))"

10000loops,bestof5:21.8usecperloop

以上三条待计时的Python表达式均被重复测试5次,每次测试中调用该表达式10000次。相同机器上运行的其他程序可能会影响计时测量,因此重复测量若干次再选取最佳结果(besttime),以保证计时的准确性。考虑到后台进程等因素通常会增加总耗时,因此最佳结果取重复测量的最小值(添加-v选项可查看各次测量值),而非平均值。由本例输出结果可知,map快于列表解析,而列表解析快于生成器(生成器表达式用作参数时可省略外部的括号)。注意,这三者的快慢对比会因场景而异。例如,[xforxinrange(10000)]比map(lambdax:x,range(10000))快三倍。因此,应根据Profiler工具的实测值而非"经验"来分析性能。

此外,需注意双引号和单引号的内外位置。在作者的Windows主机上外单内双会触发"EOLwhilescanningstringliteral"的语法错误,而在Linux主机上外单内双和外双内单均可正确解析。

再举一例:

E:\PyTest>python-mtimeit-r5-s"importmath""math.sqrt(255)"

10000000loops,bestof5:0.188usecperloop

E:\PyTest>

E:\PyTest>python-mtimeit-r5-s"frommathimportsqrt""sqrt(255)"

10000000loops,bestof5:0.143usecperloop

类似地,此处Windows主机只接受双引号,而Linux主机单双"通吃"。由输出结果可知,使用from语句导入比常规导入更快。同时也可看到,通过导入目标模块,timeit命令行也可对其函数甚至整个模块(存在入口函数时)计时。

最后是两点忠告:

进行性能评估时,要牢记任何测量结果只是一个估算值。即使相当可靠的计时工具,多次测量的结果也很可能有所出入。谨慎选取最佳结果,才能尽可能保证评估的准确性。

尽量使用标准库提供的计时工具,而不要自己编写计时函数。因为普通开发者难以全面考虑处理器时间片、后台持续或间歇运行的程序(如定时更新或杀毒)、网络连接、结果缓存、编译优化等多方面因素,导致自定义计时工具精度不高,某些情况下甚至完全偏离真实数据。

以上内容为大家介绍了Python单条语句计时,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python 规范命名变量 因为名字不能乱起,要是你一个想法,他一个想法,大家都对对方的名称不了解,这样也很难持续下去,因此这里说一下变量规范命名的规则和注意事项。1、变量定义规则:1,变量名只能是字母,数字或者下划线的任意组合
  • Python 代码排版问题 一,代码排版:1,缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。2,每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。3,
  • Python 软件开发目录规范的重要性 为什么要设计好目录结构?"设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:一类同学认为,这种个人风格问题"无关紧要"。理由是能让程序work就
  • 关于 Python 配置文件的使用方法 很多项目对配置文件的使用做法是:配置文件写在一个或多个python文件中,比如此处的conf.py。项目中哪个模块用到这个配置文件就直接通过importconf这种形式来在代码中使用配置。这种做法我不
  • Python之什么是面向对象? OOP(ObjectOrientedPrograming)编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述。怎么说呢?核心是“对象”二字,要理解对象为何物,必须把自己当成上帝,在上帝眼里
  • Python 面向过程 python面向过程优点:复杂的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将会非常简单)举个典型的面向过程的例子,写一个数据远程备份程序,分三步,本地数据打包,上传