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操作MySQL数据库的方法分享
May 29 Python
python实现360的字符显示界面
Feb 21 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
Python 创建子进程模块subprocess详解
Apr 08 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
python 的topk算法实例
Apr 02 Python
Python实现UDP程序通信过程图解
May 15 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 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中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
javascript判断非数字的简单例子
2013/07/18 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
详解vue 组件
2020/06/11 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Python字符串的修改方法实例
2019/12/19 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
python实现文法左递归的消除方法
2020/05/22 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
通过自学python能找到工作吗
2020/06/21 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
应用化学专业职业生涯规划书
2013/12/31 职场文书
应聘教师自荐信
2015/03/26 职场文书
企业培训简报范文
2015/07/20 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
改造DE1103三步曲
2022/04/07 无线电