程式碼優化的一些手段(以python為例)
阿新 • • 發佈:2021-01-18
程式碼優化的一些手段總結
最近在學python,總結了一些關於程式碼優化的手段。
作為初學者,寫的可能任存在問題,希望大家斧正。
遵循一些原則就可以提高執行的效率,避免低效計算
1.在向列表新增元素時,使用append,而不使用+;同樣在連線多個字串時,使用join,而不使用+;
(用“+”會產生新的物件,而延長了執行時間)
當連線大量的字串時,便可看出兩者的執行效率,以下面的程式碼為例:
import time #引入time進行計時
#使用append新增元素
strat=time.time()
for i in range(1000):
s= []
for m in range(10000):
s.append(i+m)
end=time.time()
print("耗時:{0}".format((end-strat)))#計算差值的出執行時間
#使用‘+’連線
strat2=time.time()
for i in range(1000):
s=[]
for m in range(10000):
s=s+[i+m]
end2=time.time()
print("耗時:{0}".format((end2-strat2)))
執行結果:
2.儘量減少迴圈內部不必要的計算 3.巢狀迴圈中,儘量減少內層迴圈的計算,儘可能向外提
例如如下迴圈程式碼的優化:
import time
#將不必要的計算放在了迴圈內層
strat=time.time()
for i in range(1000):
jieguo=[]
for j in range(10000):
jieguo.append(i*365+j*4)
end=time.time()
print("耗時:{0}".format((end-strat)))
#將不必要的計算向外層提
strat2=time.time()
for i in range(1000):
jieguo= []
c=i*365 #將i*356提前計算,放在外層迴圈
for j in range(10000):
jieguo.append(c+j*100)
end2=time.time()
print("耗時:{0}".format((end2-strat2)))
執行結果:
4.區域性變數查詢較快,儘量使用區域性變數
測試程式碼如下:
import time
#不定義全域性變數result
strat=time.time()
for i in range(100):
result=[]
for m in range(10000):
result.append(i+m)
end=time.time()
print("耗時:{0}".format((end-strat)))
#定義全域性變數result
strat2=time.time()
result=[]
for i in range(1000):
result=[]
for m in range(10000):
result.append(i+m)
end2=time.time()
print("耗時:{0}".format((end2-strat2)))
執行結果:
5.列表進行元素的插入和刪除,儘量在列表尾部操作(即如果非必要儘量少使用insert()方法,可以使用append()時就使用append)
(與上述測試程式碼類似這裡我就不寫了,大家可以自己敲了看一下結果)