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 15 Python
Python最基本的输入输出详解
Apr 25 Python
Djang中静态文件配置方法
Jul 30 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Pytorch Tensor的索引与切片例子
Aug 18 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
python实现最速下降法
Mar 24 Python
python 实现表情识别
Nov 21 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python基础学习之奇异的GUI对话框
May 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
asp.net和php的区别点总结
2019/10/10 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
小学教师的个人自我鉴定
2013/10/26 职场文书
初中女生自我鉴定
2013/12/19 职场文书
大家检讨书5000字
2014/02/03 职场文书
六查六看剖析材料
2014/02/15 职场文书
小学生作文评语集锦
2014/12/25 职场文书
员工考勤管理制度
2015/08/06 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
解决python存数据库速度太慢的问题
2021/04/23 Python
python如何进行基准测试
2021/04/26 Python