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 urlopen 使用小示例
Sep 06 Python
python检测服务器是否正常
Feb 16 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
对python 命令的-u参数详解
Dec 03 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
在pycharm中显示python画的图方法
Aug 31 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP加密解密类实例分析
2015/04/20 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
vue.js学习之UI组件开发教程
2017/07/03 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
Python实现文件按照日期命名的方法
2015/07/09 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python request 模块详细介绍
2020/11/10 Python
python 对xml解析的示例
2021/02/27 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
九年级家长会邀请函
2014/01/15 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS