测试效率 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哪个效率高,今天就自己测试一下 我使用的是客户的数据库 ...
随机推荐
- 多线程之synchronized
Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患.比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据.今天我们就 ...
- C++——命名空间
C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 一 :<iostream>和< ...
- ping不通linux服务器排查
很久没启动linux了,今天打开试了下 ssh root@192.168.229.128 ping 一直超时 老规矩挨着来排查 检查网络设备器改为Net 模式 重启网络服务 service netw ...
- locust
from locust import HttpLocust,TaskSet,task class UserVue(TaskSet): #tasks = {buy:1,consume:2} #设置权重 ...
- RabbitMQ如何保证发送端消息的可靠投递-发生镜像队列发生故障转移时
上一篇最后提到了mandatory这个参数,对于设置mandatory参数个人感觉还是很重要的,尤其在RabbitMQ镜像队列发生故障转移时. 模拟个测试环境如下: 首先在集群队列中增加两个镜像队列的 ...
- linux查看日志文件内容命令(面试被常问到的问题)
tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3 ...
- 关于MySQL存入的时间和取出时间不一致的解决
场景:代码运行在Linux-A上,new Date() 生成的时间比当前时间早13个小时,导致存入数据库内的时间也早13个小时,但前台读取展示出来的时间又是正常的.在数据库直接select now() ...
- php生成带自定义logo和带二维码跳转自定义地址的二维码
index.php<?phpheader('Content-type:text/html;charset=UTF-8');// 指定允许其他域名访问header('Access-Control- ...
- laravel5.5源码笔记(八、Eloquent ORM)
上一篇写到Eloquent ORM的基类Builder类,这次就来看一下这些方便的ORM方法是如何转换成sql语句运行的. 首先还是进入\vendor\laravel\framework\src\Il ...
- Rust 智能指针(一)
Rust 智能指针(一) 1.Box<T> Box<T>是指向堆中的指针. fn main() { let box = Box::new(3); println!(" ...