学习笔记,仅供参考


文章目录

  • 算法与数据结构--基于python
    • Python内置类型性能分析
      • timeit模块
        • 计时器类timeit.Timer
        • 计时器类下的timeit.Timer.timeit方法
        • 举个例子
      • list内置操作的时间复杂度
      • dict内置操作的时间复杂度

算法与数据结构–基于python

Python内置类型性能分析

timeit模块

该模块可以用来测试一段Python代码的执行速度,该模块定义了三个函数(timeit, repeat, default_timer)和一个公共类(timeit.Timer类)。

计时器类timeit.Timer

Timer是测量小段代码执行速度的类,我们可以用如下代码创建Timer对象:

import timeit
timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
  • 参数解释
参数 解释
stmt 测试的代码语句,也可以传方法名
setup 运行语句时需要的设置,例如为了执行time.time()要引入time包
timer 是一个定时器函数,与平台有关,不需要处理
  • 注意事项

stmt和setup可能包含多个语句,它们需要用;换行,但是它不能包含多行字符串。

计时器类下的timeit.Timer.timeit方法

语法:

timeit.Timer.timeit(number=1000000)
#number参数是测试代码时的测试次数,默认为1000000次

该方法返回执行代码的平均耗时,一个float类型的秒数。

举个例子

输入:

def test1():l = []for i in range(3000):l.append(i)def test2():l = []for i in range(3000):l.insert(0, i)def test3():l = [i for i in range(3000)]def test4():l = list(range(3000))def test5():l = []for i in range(3000):l.extend([i])def test6():l = []for i in range(3000):l = l + [i]def test7():l = []for i in range(3000):l += [i]from timeit import Timerprint('开始测试')
t1 = Timer("test1()", "from __main__ import test1")
print("append:\t\t\t", t1.timeit(number=1000), "秒")
t2 = Timer("test2()", "from __main__ import test2")
print("insert:\t\t", t2.timeit(number=1000), "秒")
t3 = Timer("test3()", "from __main__ import test3")
print("推倒:\t\t", t3.timeit(number=1000), "秒")
t4 = Timer("test4()", "from __main__ import test4")
print("list:\t\t", t4.timeit(number=1000), "秒")
t5 = Timer("test5()", "from __main__ import test5")
print("extend:\t\t", t5.timeit(number=1000), "秒")
t6 = Timer("test6()", "from __main__ import test6")
print("+:\t\t", t6.timeit(number=1000), "秒")
t7 = Timer("test7()", "from __main__ import test7")
print("+=:\t\t", t7.timeit(number=1000), "秒")
print('结束测试')

输出:

开始测试
append:                  1.1612458527893832 秒
insert:          9.692673133243222 秒
推倒:              0.43955184525272273 秒
list:            0.20597684730072885 秒
extend:          1.714901670148274 秒
+:               60.014670117555504 秒
+=:              1.030209997337593 秒
结束测试

list内置操作的时间复杂度

dict内置操作的时间复杂度

算法与数据结构(part2)--Python内置类型性能分析相关推荐

  1. 哪些模块可用于python性能分析_4-Python内置类型性能分析

    ![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg) ***** ## 代码执行时间测量模块 ...

  2. python内置类型方法_python基础(一)内置类型及方法

    python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...

  3. python 类继承list,为什么继承 Python 内置类型会出问题?!

    本文出自"Python为什么"系列,请查看全部文章 不久前,Python猫 给大家推荐了一本书<流畅的Python>(点击可跳转阅读),那篇文章有比较多的"溢 ...

  4. 以爬取知乎为例,进行python 多进程爬虫性能分析

    以爬取知乎为例,进行python 多进程爬虫性能分析 如果对多进程multiproessing模块不熟悉,请先浏览 python 使用multiprocessing模块进行多进程爬虫 问题背景: 爬取 ...

  5. Python——内置类型

    Python定义了丰富的数据类型,包括: 数值型:int, float, complex 序列:(iterable) str, unicode, tuple, list, bytearray, buf ...

  6. Python内置类型——list

    list(列表)是Python内置的可变序列(Sequence)类型,list的对象的方法也都是就地(in-place)更改调用这些方法的列表对象, List的一些细节 可以直接为list的某个下标赋 ...

  7. 算法与数据结构的python概述

    引子 问题一:1+2+3+4+5+-+10000=? 第一种解法: 1+2=3,3+3=6,6+4=10,10+5=15- 这是要算到猴年马月的节奏呀 果断弃之 第二种解法: 聪明的高斯,这样玩: ( ...

  8. python内置类型_Python内置对象类型

    核心数字类型: 数字:int,long,float,complex,bool 字符:str,unicode 列表:list 字典:dict 元组:tuple 文件:file 其他类型:集合(set), ...

  9. python内置类型方法_浅析Python数字类型和字符串类型的内置方法

    一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...

最新文章

  1. GitHub 中 Merge pull request 的 3 中选项说明
  2. Tablayout 多个界面使用一个fragment 的实例
  3. 公文字体字号标准2020_党政机关公文格式(收藏)
  4. android联网程序,android 联网 HttpClient
  5. SpringMVC框架--学习笔记(上)
  6. Dotnet core使用JWT认证授权最佳实践(二)
  7. 开课吧Web:Web前端入行门槛低吗?
  8. Linux x86_64内核中断初始化
  9. 多元梯度下降法(2)--学习率α machine learning
  10. 一个屌丝程序猿的人生(三十九)
  11. Android WebView使用详解
  12. Shell脚本之shift用法
  13. cisco 三层交换机与二层交换机级联 vlan trunk
  14. (附源码)ssm小型超市管理系统的设计与实现 毕业设计 011136
  15. TEACH_NLP——开篇
  16. C++ Deque的使用
  17. SQL优化(面试题)
  18. win7 DllRgisterServer 的调用失败错误 0x80040200
  19. 天津落户——历程简记
  20. lol6月五日服务器维护,lol5月6日维护公告

热门文章

  1. OpenGL研究, GUI框架分析, 虚拟机比较, Win10历险记, WxWidget, uboot, WireShark
  2. Spring MVC 参数自动绑定List的解决方案
  3. VS中生成时“sgen.exe”已退出,代码为 1解决办法
  4. 查看ecshop广告位对应的广告详细信息
  5. IIS企业案例系列之七:发布Exchange OWA之SSL桥接模式
  6. 点击一次铵钮产生一个新文本框,分别输入值,然后获取
  7. Android数据库存放的具体位置
  8. Java链接MySQL练习题:格式化日期、性别;避免代码注入
  9. 小组项目第一次讨论总结
  10. Java虚拟机执行引擎多态的实现