• python常用的数据结构运行效率分析


    1.while循环和for循环相同条件下的运行效率比较:

    如下代码:

     1 import time as tm
     2 import timeit as tt
     3 import random as rm
     4 
     5 def while_time():
     6     i = 0
     7     while i < 100000001:
     8         i += 1
     9         if i > 100000:
    10             break
    11     return i
    12 
    13 
    14 def for_time():
    15     j = 0
    16     for i in range(100000001):
    17         j += 1
    18         if j > 100000:
    19             break
    20     return j
    21 
    22 if __name__ == "__main__":
    23     t1 = tt.Timer("for_time()", "from __main__ import for_time")
    24         print(t1.timeit(number=10))
    25         t2 = tt.Timer("while_time()", "from __main__ import while_time")
    26         print(t2.timeit(number=10))

    结果:

    说明:如上结果,for循环和while循环的时间复杂度都是T(n)=5*n+1,但是for循环的效率比while循环稍高。

    2.遍历列表、元组、集合的效率比较:
    如下代码:

     1 def list_time():
     2     for i in list1:
     3     i += 1
     4 
     5 
     6 def tuple_time():
     7     for i in tp1:
     8     i += 1
     9 
    10 
    11 def set_time():
    12     for i in set1:
    13     i += 1
    14 
    15 def main():
    16     list1 = list(range(30000000))
    17     tp1 = tuple(list1)
    18     set1 = set(list1)
    19     t1 = tt.Timer("list_time()", "from __main__ import list_time")
    20     print(t1.timeit(number=10))
    21     t2 = tt.Timer("tuple_time()", "from __main__ import tuple_time")
    22     print(t2.timeit(number=10))
    23     t3 = tt.Timer("set_time()", "from __main__ import set_time")
    24     print(t3.timeit(number=10))
    25 if __name__ == "__main__":
    26     main()

    结果:


    说明:三个函数的查找的时间复杂度都为O(n),列表和元组的遍历效率差不多,集合遍历的效率稍低。

  • 相关阅读:
    java多线程执行时主线程的等待
    数据库锁机制
    数据库事务学习
    EF查询百万级数据的性能测试--多表连接复杂查询
    EF查询百万级数据的性能测试--单表查询
    一文看懂-Docker容器化
    一文看懂-Kafka消息队列
    一文看懂-ElasticSearch全文搜索引擎
    Linux系统(ubuntu)部署Asp.Net Core网站
    Linux系统学习(一)一Linux介绍
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/7468308.html
Copyright © 2020-2023  润新知