Python数据结构与算法第二篇——timeit模块

性能分析timeit模块

1.1基本用法

导入
import timeit
或:from timeit import timeit
或:from timeit import Timer
看执行1000次x=10的时间:
 timeit('x=10')
看x=10的执行时间,执行1000(number可以省略,默认值为1000000):
 timeit('x=10', number=1000)
看一个列表生成器的执行时间,执行1000次:
 timeit('[i for i in range(10000)]', number=1000)
def funct():
   index = 0
   for i in range(1000):
     index += i
     
t = Timer('funct()', 'from __main__ import funct', number=1000)
print(t.timeit)
def funct():
   index = 0
   for i in range(1000):
     index += i
   print(index)
  
 # timeit(函数名_字符串,运行环境_字符串,number=运行次数)
 
 t = timeit('funct()', 'from __main__ import funct', number=1000)

1.2 进阶

repeat和timeit用法相似,只是多了一个repeat参数,表示重复测试的次数(也可以不写,默认值为3.),
返回值为一个时间的列表。

from timeit import repeat

def funct():
   index = 0
   for i in range(1000):
     index += i
   print(index)

 t = repeat('funct()', 'from __main__ import func', number=100, repeat=10)
由于程序不可能总高效执行

2.应用


class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)

Timer是测量小段代码执行速度的类。

stmt参数是要测试的代码语句(statment);

setup参数是运行代码时需要的设置;

timer参数是一个定时器函数,与平台有关。

timeit.Timer.timeit(number=1000000)
from timeit import Timer

def test1():
   l = []
   for i in range(1000):
      l = l + [i]
      
def test2():
   l = []
   for i in range(1000):
      l.append(i) 
      
def test3():
   l = [i for i in range(1000)]
   
def test4():
   l = list(range(1000))

from timeit import Timer

t1 = Timer("test1()", "from __main__ import test1")
print("concat ",t1.timeit(number=1000), "seconds")
t2 = Timer("test2()", "from __main__ import test2")
print("append ",t2.timeit(number=1000), "seconds")
t3 = Timer("test3()", "from __main__ import test3")
print("comprehension ",t3.timeit(number=1000), "seconds")
t4 = Timer("test4()", "from __main__ import test4")
print("list range ",t4.timeit(number=1000), "seconds")

list内置操作的时间复杂度
在这里插入图片描述
dict内置操作的时间复杂度
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值