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中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
Python字符串详细介绍
May 09 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
python 自动重连wifi windows的方法
Dec 18 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
python生成大写32位uuid代码
Mar 03 Python
python json.dumps中文乱码问题解决
Apr 01 Python
python实现猜单词游戏
May 22 Python
编写python代码实现简单抽奖器
Oct 20 Python
python字典的元素访问实例详解
Jul 21 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中ob_start函数的使用说明
2013/11/11 PHP
php日期操作技巧小结
2016/06/25 PHP
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
详解Python当中的字符串和编码
2015/04/25 Python
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Pandas中resample方法详解
2019/07/02 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
浅析python实现动态规划背包问题
2020/12/31 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
毕业生求职推荐信
2013/11/04 职场文书
给排水工程师岗位职责
2013/11/21 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
2014年党支部承诺书
2014/05/30 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
浅谈Python魔法方法
2021/06/28 Java/Android