天天看點

超簡單的四則運算效能分析

超簡單的四則運算效能分析

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%的耗時。