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 Web框架Flask下网站开发入门实例
Feb 08 Python
Python导入oracle数据的方法
Jul 10 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
定制FileField中的上传文件名称实例
Aug 23 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
pymysql 开启调试模式的实现
Sep 24 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
Python 爬虫的原理
Jul 30 Python
python热力图实现简单方法
Jan 29 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python解惑之True和False详解
2017/04/24 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
小学生家长评语集锦
2014/01/30 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
户外活动总结范文
2014/04/30 职场文书
创业培训计划书
2014/05/03 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
火烧圆明园观后感
2015/06/03 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis
MySQL创建管理HASH分区
2022/04/13 MySQL