天天看點

<技巧>python子產品性能測試以python清單的内置函數append和insert為例以python清單insert方法和append方法快速建立1至1000的清單為例:

算法是程式的靈魂,優秀的算法能給程式的效率帶來極大的提升,而算法的優劣,往往要經過大量的測試.

在硬體環境基本不變的前提下,對算法實驗的次數越多,測試算法運作效率的結果也就越接近真實值.

python内置的性能分析子產品,可通過指定次數的反複測試,來對算法的運作時間進行累加,透過對比運作時間的長短,我們可以更直覺的了解,不同算法之間的優劣.

以python清單的内置函數append和insert為例

python内置的性能測試方法timeit.Timer.timeit()可用于對程式片段的執行耗時進行計數

以python清單insert方法和append方法快速建立1至1000的清單為例:

執行100次

100次

執行1000次

1000次

執行10000次

10000次

insert與append執行10000次相差了1.6秒,在不影響需求的情況下,建議盡量使用append提升效率

源碼:

import sys
import timeit


# 使用insert建立1~1000的數組

def insert_num():
    thousand_list1 = list()
    for i in range(1, 1001):
        thousand_list1.insert(len(thousand_list1), i)
    #print (thousand_list1)

# 使用append建立1~1000的數組
def append_num():
    thousand_list2 = list()
    for i in range(1, 1001):
        thousand_list2.append(i)
    #print("append_num",thousand_list2)

#使用清單生成式生成

def main():
    name, num = sys.argv
    num = int(num)
    in_obj = timeit.Timer("insert_num()","from __main__ import insert_num")
    print("使用insert方法往清單插入1至1000, 方法反複執行%d次共耗時:"%num,in_obj.timeit(number=num),"秒")

    in_obj = timeit.Timer("append_num()","from __main__ import append_num")
    print("使用append方法依次往清單插入1至1000,方法反複執行 %d次共耗時:"%num,in_obj.timeit(number=num),"秒")
if __name__ == "__main__":
    main()