测试效率 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哪个效率高,今天就自己测试一下 我使用的是客户的数据库 ...
随机推荐
- 文件上传之MultipartFile使用
转载 文件断点上传,html5实现前端,java实现服务器 一.单/多文件上传使用例子: 工程路径如下 -src |--main.java --controller --service ...
- cmdb截图
- 学习笔记·堆优化$\mathscr{dijkstra}$
嘤嘤嘤今天被迫学了这个算法--其实对于学习图论来说我内心是拒绝的\(\mathscr{qnq}\) 由于发现关于这个\(\mathscr{SPFA}\)的时间复杂度\(O(kE)\)中的\(k \ap ...
- B. Vile Grasshoppers
http://codeforces.com/problemset/problem/937/B The weather is fine today and hence it's high time to ...
- HDU 1316 (斐波那契数列,大数相加,大数比较大小)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1316 Recall the definition of the Fibonacci numbers: ...
- HDU变形课
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- (转)添加Template(模板)并基于模板部署应用
通过Template,可以定义一个或多个需要部署的镜像,定义依赖的对象,定义可供用户输入的配置参数项. 以cakephp-mysql.json为例. # oc create -f https://ra ...
- 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)
前言:了解就行,不必深究 上一篇链接 http://www.cnblogs.com/yangfengwu/p/8720148.html 源码链接:https://pan.baidu.com/s/1wT ...
- [图解tensorflow源码] TF系统概述篇
Rendezvous 1. 定义在core/framework/rendezvous.h 2. A Rendezvous is an abstraction for passing a Tensor ...
- VMware Tools安装方法及解决无法全屏显示问题
环境:VMware8.0虚拟机 ubuntu:12.04 在刚安装完ubuntu后,屏幕不能全屏显示,此时: 1.安装VMware Tools 步骤: 1.1 进入ubuntu系 ...