python数据结构性能分析

python数据结构性能分析

1 案例

实例化一个空列表,然后将0-n范围的数据添加到列表中。(四种方式)

1.1 方式一

def test1(num):
    num_list = []
    for i in range(n)
    	num_list += [i]
    return num_list

1.2 方式二

def test2(num):
    num_list = []
    for i in range(num):
        num_list.append(i)
    return num_list

1.3 方式三

def test3(num):
    return [i for i in range(num)]

1.4 方式四

def test4(num):
    num_list = list(range(num))
    return num_list

2 timeit模块

timeit是Python标准库内置的小工具,该模块可以用来测试一段python代码的性能(执行速度/时长)。

  • Timer类:该类是timeit模块中专门用于测量python代码的执行速度/时长的。原型为:class timeit.Timer(stmt='pass',setup='pass')。
    • stmt参数:表示即将进行测试的代码块语句。
    • setup:运行代码块语句时所需要的设置。
    • timeit函数:timeit.Timer.timeit(number=100000),该函数返回代码块语句执行number次的平均耗时。

2.1 计算四种方式的平均耗时

  • 四种方式中哪种方式添加列表元素的效率最高呢?
    • 计算运行平均耗时
from timeit import Timer


# 方式一
def test1(num):
    num_list = []
    for i in range(num):
        num_list += [i]
    return num_list


# 方式二
def test2(num):
    num_list = []
    for i in range(num):
        num_list.append(i)
    return num_list


# 方式三
def test3(num):
    return [i for i in range(num)]


# 方式四
def test4(num):
    num_list = list(range(num))
    return num_list


if __name__ == '__main__':
    timer = Timer("test1(1000)", "from __main__ import test1")
    t1 = timer.timeit(1000)
    timer2 = Timer("test2(1000)", "from __main__ import test2")
    t2 = timer2.timeit(1000)
    timer3 = Timer("test3(1000)", "from __main__ import test3")
    t3 = timer3.timeit(1000)
    timer4 = Timer("test4(1000)", "from __main__ import test4")
    t4 = timer4.timeit(1000)
    print('t1> ',t1)
    print('t2> ',t2)
    print('t3> ',t3)
    print('t4> ',t4)

# 输出:
t1>  0.09772760000487324
t2>  0.06621109999832697
t3>  0.03528640000149608
t4>  0.021056300000054762
posted @ 2023-07-08 10:23  f_carey  阅读(6)  评论(0编辑  收藏  举报