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实用日期时间处理方法汇总
May 09 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
python 换位密码算法的实例详解
Jul 19 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
python 字符串追加实例
Jul 20 Python
Python生成器next方法和send方法区别详解
May 30 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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
linux下编译安装memcached服务
2014/08/03 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
简单实现Bootstrap标签页
2020/08/09 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
Node 代理访问的实现
2019/09/19 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python3抓取中文网页的方法
2015/07/28 Python
Python检测生僻字的实现方法
2016/10/23 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Internet体系结构
2014/12/21 面试题
环境工程求职简历的自我评价范文
2013/10/24 职场文书
党员个人思想汇报
2013/12/28 职场文书
学校个人对照检查材料
2014/08/26 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
实习证明格式范文
2014/10/14 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
如何写好竞聘报告
2019/04/03 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书