python 簡單算法優化


  • 計算機界著名公式,由瑞士計算機科學家尼克勞斯.威茨(Niklaus Wirth)提出,也因此獲得圖靈獎
    程序 = 數據結構 + 算法
    沒有看過數據結構和算法,有時面對問題可能會沒有任何思路,不知如何下手去解決;
    大部分時間可能解決了問題,可是對程序運行的效率和開銷沒有意識,性能低下;
    有時會借助別人開發的利器暫時解決了問題,可是遇到性能瓶頸的時候,又不知該如何進行*針對性的優化*
  • 模擬場景
    a,b,c三個數
    1. a+b+c = 1000(0--1000)
    2.a**2 +b**2 = c**2
    求a,b,c可能的組合???
  • 普通的

 

import time
s_time = time.time()
import datetime
starttime = datetime.datetime.now()
print(starttime)
for a in range(1,1001):
    for b in range(1,1001):
        for c in range(1, 1001):
            if a+b+c == 1000 and a**2 + b**2 == c**2:
                print("a= %s,b= %s,c= %s"% (a,b,c))
endtime = datetime.datetime.now()
yonghsi = endtime - starttime
print("消耗的時間為:%s"%yonghsi)

 

    • 時間

  • 算法優化
import time
starttime = time.time()
print(starttime)
for a in range(1,1001):
    for b in range(1,1001):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print("a= %s,b= %s,c= %s"% (a,b,c))
endtime = time.time()
print(endtime)
yongshi = endtime-starttime
print("總耗時為:%s" % yongshi)
  • timeit (python內置測試模塊)
import timeit   #python內置的性能測試模塊

def func():
    for a in range(1, 1001):
        for b in range(1, 1001):
            c = 1000 - a - b
            if a ** 2 + b ** 2 == c ** 2:
                print("a= %s,b= %s,c= %s" % (a, b, c))

timer01 = timeit.Timer("func()","from __main__ import func")
#Timer(第一個位置寫你要為哪個函數進行性能測試。第二個位置是從哪引入這個函數)
print(timer01.timeit(10)/10)  #此處timeit()表示測試次數  #1.2070892295

 
 
2020-01-07 00:08:26
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM