测试效率 timeit cProfile
timeit使用
def f1(lIn):
l1 = sorted(lIn) # O(nlogn) C语言的
l2 = [i for i in l1 if i<0.5] # O(n)
return [i*i for i in l2] # O(k) def f2(lIn):
l1 = [i for i in lIn if i<0.5] # O(n)
l2 = sorted(l1) # O(klogk) C语言的
return [i*i for i in l2] # O(k) def f3(lIn):
l1 = [i*i for i in lIn] # O(n)
l2 = sorted(l1) # O(nlogn) C语言的
return [i for i in l2 if i<(0.5*0.5)] # O(n) import timeit
import random
l = [random.random() for i in range(100000)] t1 = timeit.Timer("f1(l)","from __main__ import random,l,f1")
t2 = timeit.Timer("f2(l)","from __main__ import random,l,f2")
t3 = timeit.Timer("f3(l)","from __main__ import random,l,f3")
print(t1.timeit(number=50)) # 3.0630057093816947
print(t2.timeit(number=50)) # 1.6970076176407773
print(t3.timeit(number=50)) # 3.30195772223185
或使用Ipython
def f1(lIn):
l1 = sorted(lIn) # O(nlogn) C语言的
l2 = [i for i in l1 if i<0.5] # O(n)
return [i*i for i in l2] # O(k)
def f2(lIn):
l1 = [i for i in lIn if i<0.5] # O(n)
l2 = sorted(l1) # O(klogk) C语言的
return [i*i for i in l2] # O(k)
def f3(lIn):
l1 = [i*i for i in lIn] # O(n)
l2 = sorted(l1) # O(nlogn) C语言的
return [i for i in l2 if i<(0.5*0.5)] # O(n)
import random
lIn = [random.random() for i in range(100000)] %timeit f1(lIn)
75.8 ms ± 917 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit f2(lIn)
39.3 ms ± 560 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit f3(lIn)
80 ms ± 1.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
使用cProfile
def f1(lIn):
l1 = sorted(lIn) # O(nlogn) C语言的
l2 = [i for i in l1 if i<0.5] # O(n)
return [i*i for i in l2] # O(k) def f2(lIn):
l1 = [i for i in lIn if i<0.5] # O(n)
l2 = sorted(l1) # O(klogk) C语言的
return [i*i for i in l2] # O(k) def f3(lIn):
l1 = [i*i for i in lIn] # O(n)
l2 = sorted(l1) # O(nlogn) C语言的
return [i for i in l2 if i<(0.5*0.5)] # O(n) import cProfile
import random
lIn = [random.random() for i in range(100000)]
cProfile.run('f1(lIn)')
cProfile.run('f2(lIn)')
cProfile.run('f3(lIn)') """
7 function calls in 0.125 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.120 0.120 11.py:1(f1)
1 0.020 0.020 0.020 0.020 11.py:3(<listcomp>)
1 0.009 0.009 0.009 0.009 11.py:4(<listcomp>)
1 0.005 0.005 0.125 0.125 <string>:1(<module>)
1 0.000 0.000 0.125 0.125 {built-in method builtins.exec}
1 0.091 0.091 0.091 0.091 {built-in method builtins.sorted}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 7 function calls in 0.044 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.041 0.041 11.py:6(f2)
1 0.007 0.007 0.007 0.007 11.py:7(<listcomp>)
1 0.006 0.006 0.006 0.006 11.py:9(<listcomp>)
1 0.003 0.003 0.044 0.044 <string>:1(<module>)
1 0.000 0.000 0.044 0.044 {built-in method builtins.exec}
1 0.028 0.028 0.028 0.028 {built-in method builtins.sorted}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 7 function calls in 0.068 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.065 0.065 11.py:11(f3)
1 0.006 0.006 0.006 0.006 11.py:12(<listcomp>)
1 0.010 0.010 0.010 0.010 11.py:14(<listcomp>)
1 0.002 0.002 0.068 0.068 <string>:1(<module>)
1 0.000 0.000 0.068 0.068 {built-in method builtins.exec}
1 0.049 0.049 0.049 0.049 {built-in method builtins.sorted}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
"""
测试效率 timeit cProfile的更多相关文章
- 测试效率加倍提升!shell 高阶命令快来 get 下!
背景 目前大部分的项目都是部署在Linux系统上,作为测试,掌握常用Linux命令是必须的技能.很多的工作了好几年的测试人员可能还只会简单的ls.cd.cat等等这些命令,这些命令是可以应付工作的大部 ...
- Charles中使用Rewrite提高测试效率
上次给大家演示了Charles中通过Map Local功能来提高测试效率,Charles还有另外一个强大的功能,Rewrite,这次也给大家演示一下. Charles中的Rewrite功能非常强大,可 ...
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...
- 专注于提高“人肉测试”效率,Bugtags已完成600万元天使轮融资
导语:近日,专注于移动测试的缺陷发现及管理工具“Bugtags”创始人张磊独家透露,Bugtags已完成600万元天使轮投资,投资方为高捷资本. 近日,专注于移动测试的缺陷发现及管理工具“Bugtag ...
- Charles中使用Map Local提高测试效率
书接上回,上次说到Charles中可以使用修改返回值来模拟接口返回,这次我们来说一下Charles中另外一个强大的功能. 我们用手机连接Charles,具体可以参考上一篇<借助Charles来测 ...
- java 20 -10 字节流四种方式复制mp3文件,测试效率
电脑太渣,好慢..反正速率是: 高效字节流一次读写一个字节数组 > 基本字节流一次读写一个字节数组 > 高效字节流一次读写一个字节 > 基本字节流一次读写一个字节 前两个远远快过后面 ...
- Java基础知识强化之IO流笔记30:字节流4种方式复制mp4并测试效率
1. 需求:把e:\\哥有老婆.mp4 复制到当前项目目录下的copy.mp4中 字节流四种方式复制文件: • 基本字节流一次读写一个字节 • 基本字节流一次读写一个字节数组 • 高效字节流一次读写一 ...
- SQLSERVER语句 in和exists哪个效率高本人测试证明
SQLSERVR语句 in和exists哪个效率高本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库GPOSDB(已经有数据) 环境:SQLSERVE ...
- in和exists哪个效率高本人测试证明
in和exists哪个效率高本人测试证明 SQLSERVR语句 in和exists哪个效率高自己测试本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库 ...
随机推荐
- Electron简介和安装使用
一.Electron简介Electron的应用,使得了JS不仅仅可以BS端项目,还可以做CS端项目. 另外今天之所以研究下Electron,还是因为公司的需要,业务场景是,通过Electron.js开 ...
- Spring源码分析(十四)从bean的实例中获取对象
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在getBean方法中,getObjectForBeanlnstance ...
- STM32F103 ucLinux内核没有完全启动
STM32F103 ucLinux内核没有完全启动 从BOOT跳转到内核后,执行一长段的汇编语言,然后来到startkernel函数,开启C语言之旅. 但是内核输出不正常,如下所示: Linux ve ...
- mac 下安装php7.1 memcache扩展
1.下载memcache源代码文件 https://github.com/websupport-sk/pecl-memcache/archive/php7.zip 文件夹名为:pecl-memcach ...
- PHP+Ajax+plupload无刷新上传头像代码
很简单的一款PHP+Ajax+plupload无刷新上传头像代码,兼容性很好,可以直接拿来用.你可以自定义各种类型的文件.本实例中只能上传"jpg", "png" ...
- 树莓派 ubuntu 系统下修改config.txt文件调整分辨率记录
参考 https://www.jianshu.com/p/99eea4db21c4 注:操作前最好先备份个 config.txt 文件 防止悲剧 防止悲剧 防止悲剧 终端下 进入boot/config ...
- member access within misaligned address 0x0000002c3931 for type 'struct ListNode‘
From MWeb 在做leetcode 第2题时使用C语言编写链表时报错 错误复现 错误原因 解决办法 错误复现 报错时的代码如下 /** * Definition for singly-linke ...
- 20155327 实验三 敏捷开发与XP实践
20155327 实验三 敏捷开发与XP实践 实验内容 任务一 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装al ...
- WebX框架的页面授权
WebX框架的页面授权 什么是页面授权,简单来说就是对于一个Web应用程序里,哪些页面可以被哪些人在什么情况下访问进行限制.举个简单的例子,有些页面只有用户登录以后才能访问,而另外一些页面无论是否用户 ...
- c++ 文件位置相关操作
教学内容: l 文件定位操作 l fgetpos定位 l fsetpos设定位置 l 文件结束判断函数feof 一.文件定位操作 在C语言标准库里 获取文件位置的函数有ftell和fge ...