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的更多相关文章

  1. 测试效率加倍提升!shell 高阶命令快来 get 下!

    背景 目前大部分的项目都是部署在Linux系统上,作为测试,掌握常用Linux命令是必须的技能.很多的工作了好几年的测试人员可能还只会简单的ls.cd.cat等等这些命令,这些命令是可以应付工作的大部 ...

  2. Charles中使用Rewrite提高测试效率

    上次给大家演示了Charles中通过Map Local功能来提高测试效率,Charles还有另外一个强大的功能,Rewrite,这次也给大家演示一下. Charles中的Rewrite功能非常强大,可 ...

  3. 数据摘要算法的测试效率(SHA、MD5和CRC32)

    1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...

  4. 专注于提高“人肉测试”效率,Bugtags已完成600万元天使轮融资

    导语:近日,专注于移动测试的缺陷发现及管理工具“Bugtags”创始人张磊独家透露,Bugtags已完成600万元天使轮投资,投资方为高捷资本. 近日,专注于移动测试的缺陷发现及管理工具“Bugtag ...

  5. Charles中使用Map Local提高测试效率

    书接上回,上次说到Charles中可以使用修改返回值来模拟接口返回,这次我们来说一下Charles中另外一个强大的功能. 我们用手机连接Charles,具体可以参考上一篇<借助Charles来测 ...

  6. java 20 -10 字节流四种方式复制mp3文件,测试效率

    电脑太渣,好慢..反正速率是: 高效字节流一次读写一个字节数组 > 基本字节流一次读写一个字节数组 > 高效字节流一次读写一个字节 > 基本字节流一次读写一个字节 前两个远远快过后面 ...

  7. Java基础知识强化之IO流笔记30:字节流4种方式复制mp4并测试效率

    1. 需求:把e:\\哥有老婆.mp4 复制到当前项目目录下的copy.mp4中 字节流四种方式复制文件: • 基本字节流一次读写一个字节 • 基本字节流一次读写一个字节数组 • 高效字节流一次读写一 ...

  8. SQLSERVER语句 in和exists哪个效率高本人测试证明

    SQLSERVR语句 in和exists哪个效率高本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库GPOSDB(已经有数据) 环境:SQLSERVE ...

  9. in和exists哪个效率高本人测试证明

    in和exists哪个效率高本人测试证明 SQLSERVR语句 in和exists哪个效率高自己测试本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库 ...

随机推荐

  1. Metapackage包

    Metapackage(功能包集)是把一些相近的功能模块. 软件包放到一起. ROS里常见的Metapacakge有: 2.Metapackage写法 CMakeLists.txt 写法如下: cma ...

  2. unittest框架官方翻译:中文版

    指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的   开发(3.8) 3.7.3rc1 3.6 3.5 2.7  文档 » Python标准库 » 开发工具 » | ...

  3. P1569 [USACO11FEB]属牛的抗议

    题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. The cow ...

  4. linux下pcf8563驱动时钟使用

    环境: HelperA64开发板 Linux3.10内核 时间:2019.01.17 目标:PCF8563实时时钟驱动的使用 问题:因为pcf8563的驱动是linux内核自带的,网上也有很多分析的方 ...

  5. 各类分布----二项分布,泊松分布,负二项分布,gamma 分布,高斯分布,学生分布,Z分布

    伯努利实验: 如果无穷随机变量序列  是独立同分布(i.i.d.)的,而且每个随机变量  都服从参数为p的伯努利分布,那么随机变量  就形成参数为p的一系列伯努利试验.同样,如果n个随机变量  独立同 ...

  6. 6.Exceptions-异常(Dart中文文档)

    异常是用于标识程序发生未知异常.如果异常没有被捕获,If the exception isn't caught, the isolate that raised the exception is su ...

  7. 使用源安装java JDK

    使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ppa:webupd8team/java sudo apt-ge ...

  8. c++ 变量 常量

  9. CF 1114 E. Arithmetic Progression

    E. Arithmetic Progression 链接 题意: 交互题. 有一个等差序列,现已打乱顺序,最多询问60次来确定首项和公差.每次可以询问是否有严格大于x的数,和查看一个位置的数. 分析: ...

  10. JAVA Eclipse 快捷键 ctrl+f 查找/替换 字符串