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 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
简单谈谈python中的多进程
Nov 06 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
对Python 数组的切片操作详解
Jul 02 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python实现多线程的两种方式分析
Aug 29 Python
python禁用键鼠与提权代码实例
Aug 16 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 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实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
Javascript浅谈之this
2013/12/17 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
javascript的this关键字详解
2019/05/20 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
如何基于python实现归一化处理
2020/01/20 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
党委书记岗位职责
2013/11/24 职场文书
中专自我鉴定
2014/02/05 职场文书
端午节演讲稿
2014/05/23 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
机械操作工岗位职责
2014/08/08 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
心得体会的写法
2014/09/05 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
三八节活动简报
2015/07/20 职场文书