超簡單的四則運算效能分析
psp表格
解題思路及設計過程
題目要求:随機自動生成國小四則運算題目(注意是給國小生用的,要是結果出現負數的話他們會迷茫的!)
解題思路:這次作業重點在效能分析,故隻考慮最簡單的情況,将題目分為幾個函數來實作:
(1)随機生成表達式函數(getEquation):利用python自帶的random庫的random.randint随機生成09的整數作為表達式數字、随機生成14的整數代表運算符。
(2)比對運算符函數(choose):随機生成1~4的整數分别代表:+ 、- 、* 、/ 四個運算符,利用比對函數得到運算符。
(3)測試函數(test):取不同數量的樣例,利用python的time庫對運作時間進行分析
代碼說明
import random
import time
def getEquation(): # 生成表達式
equation = ""
opration = ""
number = 0
number = random.randint(1,9)
equation += str(number) # 将數字放進式子裡
opration = choose(random.randint(1,4)) # 随機生成符号+ - * ÷
equation += opration # 将符号放進式子裡
answer = number
if opration"÷": # 分母不為0
answer /= number
elif opration"+":
answer += number
number = random.randint(0,9) # 随機生成0~9
elif opration"-":
answer -= number
elif opration"*":
equation += '=' # 将=放進式子裡
print(equation)
return answer
def choose(n): # 比對符号
if n1:
return "+"
elif n2:
return "-"
elif n==3:
return ""
elif n==4:
return "÷"
def test():# 測試函數
for i in range(10000):
answer = getEquation()
start_time = time.time()
test() # 待測試的函數
end_time = time.time()
print ('time cost:' ,str(end_time - start_time))
測試運作
測試10萬個例子,用時:1.98s
下圖是用pycharm的profile做的單元測試,由于代碼比較簡單,隻有一個主要函數,是以結果為:getEquation函數占用絕大部分耗時(98.2%)choose函數占用0.9%的耗時。