算法与数据结构(part2)--Python内置类型性能分析

    技术2022-07-11  134

    学习笔记,仅供参考


    文章目录

    算法与数据结构--基于pythonPython内置类型性能分析timeit模块计时器类timeit.Timer计时器类下的timeit.Timer.timeit方法举个例子 list内置操作的时间复杂度dict内置操作的时间复杂度


    算法与数据结构–基于python

    Python内置类型性能分析

    timeit模块

    该模块可以用来测试一段Python代码的执行速度,该模块定义了三个函数(timeit, repeat, default_timer)和一个公共类(timeit.Timer类)。

    计时器类timeit.Timer

    Timer是测量小段代码执行速度的类,我们可以用如下代码创建Timer对象:

    import timeit timeit.Timer(stmt='pass', setup='pass', timer=<timer function>) 参数解释 参数解释stmt测试的代码语句,也可以传方法名setup运行语句时需要的设置,例如为了执行time.time()要引入time包timer是一个定时器函数,与平台有关,不需要处理 注意事项

    stmt和setup可能包含多个语句,它们需要用;换行,但是它不能包含多行字符串。

    计时器类下的timeit.Timer.timeit方法

    语法:

    timeit.Timer.timeit(number=1000000) #number参数是测试代码时的测试次数,默认为1000000次

    该方法返回执行代码的平均耗时,一个float类型的秒数。

    举个例子

    输入:

    def test1(): l = [] for i in range(3000): l.append(i) def test2(): l = [] for i in range(3000): l.insert(0, i) def test3(): l = [i for i in range(3000)] def test4(): l = list(range(3000)) def test5(): l = [] for i in range(3000): l.extend([i]) def test6(): l = [] for i in range(3000): l = l + [i] def test7(): l = [] for i in range(3000): l += [i] from timeit import Timer print('开始测试') t1 = Timer("test1()", "from __main__ import test1") print("append:\t\t\t", t1.timeit(number=1000), "秒") t2 = Timer("test2()", "from __main__ import test2") print("insert:\t\t", t2.timeit(number=1000), "秒") t3 = Timer("test3()", "from __main__ import test3") print("推倒:\t\t", t3.timeit(number=1000), "秒") t4 = Timer("test4()", "from __main__ import test4") print("list:\t\t", t4.timeit(number=1000), "秒") t5 = Timer("test5()", "from __main__ import test5") print("extend:\t\t", t5.timeit(number=1000), "秒") t6 = Timer("test6()", "from __main__ import test6") print("+:\t\t", t6.timeit(number=1000), "秒") t7 = Timer("test7()", "from __main__ import test7") print("+=:\t\t", t7.timeit(number=1000), "秒") print('结束测试')

    输出:

    开始测试 append: 1.1612458527893832 秒 insert: 9.692673133243222 秒 推倒: 0.43955184525272273 秒 list: 0.20597684730072885 秒 extend: 1.714901670148274 秒 +: 60.014670117555504 秒 +=: 1.030209997337593 秒 结束测试

    list内置操作的时间复杂度

    dict内置操作的时间复杂度

    Processed: 0.018, SQL: 9