在go語言裡也可以編寫基準測試,規則如下:
1.基準測試的**檔案必須以 _test.go 結尾
2.基準測試的函式必須以 benchmark 開頭,必須是可以匯出的
3.基準測試的函式必須接受乙個指向 benchmark 型別的指標作為唯一引數
4.基準測試函式不能有返回值
5.b.resettimer 是重置計時器,這樣可以避免 for 迴圈之前的初始化**干擾
6.最後的 for 迴圈很重要,被測試的**要放到 for 迴圈裡
7. b.n 是基準測試框架提供的,表示迴圈的次數,因為需要反覆呼叫測試的**,才可以評估效能
(1)先寫測試
(2)嘗試執行
(3)用最少的**來讓失敗的測試先跑起來
(4)把**補充完整,使得它能夠通過測試
(5)重構
重構+=運算子並使用。
(6)基準測試
增加benchmarkrepeat
結果:
(1)先寫測試
package quicksort
import "testing"
func testquicksort(t *testing.t)
result := quicksort(arr, 0, 9)
expect := int
for i := 0; i < 10; i++
}}
(2)嘗試執行
(3)用最少的**來讓失敗的測試先跑起來
package quicksort
func quicksort(arr int, low, high int) int
(4)把**補充完整,使得它能夠通過測試
package quicksort
func quicksort(arr int, low, high int) int
return ret
}
(5)重構
快速排序是通過找到乙個「中點」,將陣列排成所有大於「中點」的在一邊,小於「中點」的在另一邊,然後分別對兩邊再次進行快速排序的遞迴演算法,實現如下:
package quicksort
func partition(array int, i int, j int) int
if j > i
for i < j && array[i] < pivot
if i < j
} array[i] = pivot
return i
}func quicksort(arr int, low, high int) int
return arr
}
結果:
(6)基準測試
func benchmarkrepeat(b *testing.b)
for i := 0; i < b.n; i++
}
結果如下:
通過這次實驗,初步理解了tdd的思想,完成了簡單的基準測試。
服務計算作業1 配置你的私有雲
實驗目的 實驗內容 實驗中遇到的問題 初步了解虛擬化技術,理解雲計算的相關概念 理解系統工程師面臨的困境 理解自動化安裝 管理 devops 在雲應用中的重要性 用vbox建立虛擬機器 備份mv etc yum.repos.d centos base.repo etc yum.repos.d cen...
服務計算作業5 模仿 改寫程式包
mycobra用於處理簡單的子命令系統 簡單的,不能帶很多引數的 其中有乙個命令樹,每個節點的子節點就是子命令,每個節點儲存自己的命令。type command struct設計 type command struct 就是一棵樹。addcommand函式 func c command addcom...
服務計算作業九 前後端分離的開發
本次作業中我負責的部分是前端。前端的實現使用了vue這款輕量級框架,在經過一些基本使用方法的學習之後實現也不算太難。vue的安裝和啟動這些部分由於都是輸入相應命令即可,因此不再贅述,主要講講 的實現。使用vue開發只需要修改其中src部分,而src中又主要以寫components和router為主。...