首页 / 知识
Python单条语句计时
2023-11-12 13:33: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相关知识,请关注我们
最新内容
相关内容
Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,python的数据类型
python的数据类型,数字,较大,数据,培训,变量,表示,字符串,赋值,常量,小数,1.整型Python可以处理任意大小的整数,当然包括负整数,在程序中的表示Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python数据结构的时间复杂性
Python数据结构的时间复杂性,时间,项目,情况,平均,复杂度,培训,术语,数据,状态,操作,1.让我们了解大O符号的含义是什么?在算法中执行许多操作Python标准库之collections模块
Python标准库之collections模块,名字,标准,信息,电话号码,培训,工厂,位置,简介,异常,对象,collections模块简介collections是Python标准库里数据科学中必须了解的Python核心库
数据科学中必须了解的Python核心库,数据,生产,代码,标准,分析,培训,图片,工具,统一,涉足,python有三个核心数据科学库,在此基础上还创建了许多Python集合和时间复杂度
Python集合和时间复杂度,项目,时间,数据,数字,照片,情况,通用,培训,平均,表示,在本文的这一部分中,我将记录CPython中的常见集合,然后概述它们使用Python处理JSON格式的数据
使用Python处理JSON格式的数据,数据,代码,名称,信息,培训,对比,灵活,字典,文件,格式,如果你不希望从头开始创造一种数据格式来存放数据,JSON是Python编程中3个常用的数据结构和
Python编程中3个常用的数据结构和算法,代码,电话号码,销售额,有限,情况,分解,异常,名称,平均,位置,python内置了许多非常有用的数据结构,比如Python变量数据类型的转换
Python变量数据类型的转换,代码,数据,培训,信息,字符串,类型,变量,整数,浮点,函数,虽然Python是弱类型编程语言,不需要像Java或C语言那样还要