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 时间处理datetime实例
Sep 06 Python
Python 字符串定义
Sep 25 Python
Python写的Socks5协议代理服务器
Aug 06 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
用Python生成HTML表格的方法示例
Mar 06 Python
Python super()函数使用及多重继承
May 06 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
python opencv通过4坐标剪裁图片
Jun 05 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
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js图片处理示例代码
2014/05/12 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python中super关键字用法实例分析
2015/05/28 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python manage.py runserver流程解析
2019/11/08 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
经典c++面试题三
2015/07/08 面试题
大学生军训广播稿
2014/01/24 职场文书
特色蛋糕店创业计划书
2014/01/28 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
公民授权委托书范本
2014/09/17 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
老公出轨后的保证书
2015/05/08 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL