Python内置类型性能分析过程实例


Posted in Python onJanuary 29, 2020

这篇文章主要介绍了Python内置类型性能分析过程实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

timeit模块

timeit模块可以用来测试一小段Python代码的执行速度。

Timer是测量小段代码执行速度的类。

class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)

  • stmt参数是要测试的代码语句(statment);
  • setup参数是运行代码时需要的设置;
  • timer参数是一个定时器函数,与平台有关。

Timer对象.timeit(number=1000000)

Timer类中测试语句执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的平均耗时,一个float类型的秒数。

list的操作测试

# -*- coding:utf-8 -*-

import timeit

def t2():
  li = []
  for i in range(10000):
    li.insert(0, i)

def t0():
  li = []
  for i in range(10000):
    li.extend([i])

def t1():
  li = []
  for i in range(10000):
    li.append(i)

def t3():
  li = []
  for i in range(10000):
    li += [i]

def t3_1():
  li = []
  for i in range(10000):
    li = li + [i]

def t4():
  li = [ i for i in range(10000)]

def t5():
  li = list(range(10000))


timer2 = timeit.Timer(stmt="t2()", setup="from __main__ import t2")
print("insert", timer2.timeit(number=1000), "seconds")

timer0 = timeit.Timer(stmt="t0()", setup="from __main__ import t0")
print("extend", timer0.timeit(number=1000), "seconds")

timer1 = timeit.Timer(stmt="t1()", setup="from __main__ import t1")
print("append", timer1.timeit(number=1000), "seconds")

timer3 = timeit.Timer(stmt="t3()", setup="from __main__ import t3")
print("+=", timer3.timeit(number=1000), "seconds")

timer3_1 = timeit.Timer(stmt="t3_1()", setup="from __main__ import t3_1")
print("+加法", timer3_1.timeit(number=1000), "seconds")

timer4 = timeit.Timer(stmt="t4()", setup="from __main__ import t4")
print("[i for i in range()]", timer4.timeit(number=1000), "seconds")

timer5 = timeit.Timer(stmt="t5()", setup="from __main__ import t5")
print("list", timer5.timeit(number=1000), "seconds")
执行结果:

insert 18.678989517 seconds
extend 1.022223395000001 seconds
append 0.6755100029999994 seconds
+= 0.773258104 seconds
+加法 126.929554195 seconds
[i for i in range()] 0.36483252799999377 seconds
list 0.19607099800001038 seconds

pop操作测试

x = range(2000000)
pop_zero = Timer("x.pop(0)","from __main__ import x")
print("pop_zero ",pop_zero.timeit(number=1000), "seconds")

x = range(2000000)
pop_end = Timer("x.pop()","from __main__ import x")
print("pop_end ",pop_end.timeit(number=1000), "seconds")

# ('pop_zero ', 1.9101738929748535, 'seconds')
# ('pop_end ', 0.00023603439331054688, 'seconds')

测试pop操作:从结果可以看出,"pop最后一个元素"的效率远远高于"pop第一个元素"

可以自行尝试下list的append(value)和insert(0,value),即一个后面插入和一个前面插入???

list内置操作的时间复杂度

Python内置类型性能分析过程实例

dict内置操作的时间复杂度

Python内置类型性能分析过程实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python套接字流重定向实例汇总
Mar 03 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
python实现拓扑排序的基本教程
Mar 11 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
python实现图片九宫格分割
Mar 07 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
opencv设置采集视频分辨率方式
Dec 10 Python
Python是怎样处理json模块的
Jul 16 Python
使用tkinter实现三子棋游戏
Feb 25 Python
python add_argument()用法解析
Jan 29 #Python
python使用ctypes调用扩展模块的实例方法
Jan 28 #Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 #Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 #Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 #Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 #Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 #Python
You might like
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
简单了解python数组的基本操作
2019/11/26 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
ASP.NET中的身份验证有那些
2012/07/13 面试题
中医专业应届生求职信
2013/11/17 职场文书
奉献演讲稿范文
2014/05/21 职场文书
元旦趣味活动方案
2014/08/22 职场文书
被告答辩状范文
2015/05/22 职场文书
检讨书范文
2019/04/16 职场文书
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS