Python內(nèi)置類型性能分析過(guò)程實(shí)例
這篇文章主要介紹了Python內(nèi)置類型性能分析過(guò)程實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
timeit模塊
timeit模塊可以用來(lái)測(cè)試一小段Python代碼的執(zhí)行速度。
Timer是測(cè)量小段代碼執(zhí)行速度的類。
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
- stmt參數(shù)是要測(cè)試的代碼語(yǔ)句(statment);
- setup參數(shù)是運(yùn)行代碼時(shí)需要的設(shè)置;
- timer參數(shù)是一個(gè)定時(shí)器函數(shù),與平臺(tái)有關(guān)。
Timer對(duì)象.timeit(number=1000000)
Timer類中測(cè)試語(yǔ)句執(zhí)行速度的對(duì)象方法。number參數(shù)是測(cè)試代碼時(shí)的測(cè)試次數(shù),默認(rèn)為1000000次。方法返回執(zhí)行代碼的平均耗時(shí),一個(gè)float類型的秒數(shù)。
list的操作測(cè)試
# -*- coding:utf-8 -*-
import timeit
def t2():
li = []
for i in range(10000):
li.insert(0, i)
def t0():
li = []
for i in range(10000):
li.extend([i])
def t1():
li = []
for i in range(10000):
li.append(i)
def t3():
li = []
for i in range(10000):
li += [i]
def t3_1():
li = []
for i in range(10000):
li = li + [i]
def t4():
li = [ i for i in range(10000)]
def t5():
li = list(range(10000))
timer2 = timeit.Timer(stmt="t2()", setup="from __main__ import t2")
print("insert", timer2.timeit(number=1000), "seconds")
timer0 = timeit.Timer(stmt="t0()", setup="from __main__ import t0")
print("extend", timer0.timeit(number=1000), "seconds")
timer1 = timeit.Timer(stmt="t1()", setup="from __main__ import t1")
print("append", timer1.timeit(number=1000), "seconds")
timer3 = timeit.Timer(stmt="t3()", setup="from __main__ import t3")
print("+=", timer3.timeit(number=1000), "seconds")
timer3_1 = timeit.Timer(stmt="t3_1()", setup="from __main__ import t3_1")
print("+加法", timer3_1.timeit(number=1000), "seconds")
timer4 = timeit.Timer(stmt="t4()", setup="from __main__ import t4")
print("[i for i in range()]", timer4.timeit(number=1000), "seconds")
timer5 = timeit.Timer(stmt="t5()", setup="from __main__ import t5")
print("list", timer5.timeit(number=1000), "seconds")
執(zhí)行結(jié)果: insert 18.678989517 seconds extend 1.022223395000001 seconds append 0.6755100029999994 seconds += 0.773258104 seconds +加法 126.929554195 seconds [i for i in range()] 0.36483252799999377 seconds list 0.19607099800001038 seconds
pop操作測(cè)試
x = range(2000000)
pop_zero = Timer("x.pop(0)","from __main__ import x")
print("pop_zero ",pop_zero.timeit(number=1000), "seconds")
x = range(2000000)
pop_end = Timer("x.pop()","from __main__ import x")
print("pop_end ",pop_end.timeit(number=1000), "seconds")
# ('pop_zero ', 1.9101738929748535, 'seconds')
# ('pop_end ', 0.00023603439331054688, 'seconds')
測(cè)試pop操作:從結(jié)果可以看出,"pop最后一個(gè)元素"的效率遠(yuǎn)遠(yuǎn)高于"pop第一個(gè)元素"
可以自行嘗試下list的append(value)和insert(0,value),即一個(gè)后面插入和一個(gè)前面插入???
list內(nèi)置操作的時(shí)間復(fù)雜度

dict內(nèi)置操作的時(shí)間復(fù)雜度

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于python編寫(xiě)監(jiān)控系統(tǒng)各項(xiàng)資源的腳本
這篇文章主要為大家詳細(xì)介紹了如何編寫(xiě)一個(gè)python腳本,實(shí)現(xiàn)監(jiān)控網(wǎng)絡(luò)的流量、CPU使用率、內(nèi)存使用率和磁盤(pán)使用情況,感興趣的小伙伴可以了解下2023-11-11
如何解決Python:報(bào)錯(cuò)[Errno 2]No such file or&nb
介紹了Python文件讀取操作時(shí)常見(jiàn)的錯(cuò)誤原因及解決方法,主要錯(cuò)誤原因包括路徑拼寫(xiě)錯(cuò)誤、工作目錄與相對(duì)路徑不匹配以及文件不存在,解決方法有使用絕對(duì)路徑和動(dòng)態(tài)獲取腳本路徑,其他注意事項(xiàng)包括驗(yàn)證文件路徑與名稱、理解工作目錄與相對(duì)路徑2025-02-02
python實(shí)現(xiàn)對(duì)文件進(jìn)行MD5校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了如何使用python對(duì)文件進(jìn)行MD5校驗(yàn)并比對(duì)文件重復(fù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
簡(jiǎn)單介紹Python中用于求最小值的min()方法
這篇文章主要介紹了簡(jiǎn)單介紹Python中用于求最小值的min()方法,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
python openpyxl提取Excel圖片實(shí)現(xiàn)原理技巧
在這篇文章中,將介紹如何使用openpyxl來(lái)提取Excel中的圖片,以及它的原理和技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
基于 Django 的手機(jī)管理系統(tǒng)實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了基于 Django 的手機(jī)管理系統(tǒng)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python 浮點(diǎn)數(shù)四舍五入需要注意的地方
這篇文章主要介紹了python 四舍五入需要注意的地方,幫助大家避免一些不必要的坑,感興趣的朋友可以了解下2020-08-08

