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连接字符串的方法小结
Jul 13 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
python使用opencv进行人脸识别
Apr 07 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
详解Python3注释知识点
Feb 19 Python
Python中使用遍历在列表中添加字典遇到的坑
Feb 27 Python
详解Python字符串切片
May 20 Python
python中metaclass原理与用法详解
Jun 25 Python
python通过http下载文件的方法详解
Jul 26 Python
用python实现英文字母和相应序数转换的方法
Sep 18 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
1 Tube Radio
2021/03/02 无线电
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
javascript与CSS复习(三)
2010/06/29 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python提取内容关键词的方法
2015/03/16 Python
详解python分布式进程
2018/10/08 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python中bisect的用法及示例详解
2020/07/20 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
英文商务邀请信
2014/01/22 职场文书
运动会广播稿20字
2014/02/18 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
商业房地产广告语
2014/03/13 职场文书
计算机求职信
2014/07/02 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL