golang性能テスト

1627 ワード

書式:
Fnc BenchmarkXxx(b*testingn.B)
単純コード:
package examples

import (
    "io/ioutil"
    "net/http"
    "testing"
)
//       
func BenchmarkLoopsParallel(b *testing.B) {
    b.RunParallel(func(pb *testing.PB) { //  
        for pb.Next() {
            resp, err := http.Get("http://10.10.200.128:8080/image?t=MDA")
            if err != nil {
                // handle error
            }

            cookies := resp.Cookies()
            verify_key := ""
            for _, v := range cookies {
                if v.Name == "VERIFY_KEY" {
                    verify_key = v.Value
                }
            }

            if err != nil {
                // handle error
            }
            defer resp.Body.Close()
            if verify_key == "" {
                b.Fail()
            }
        }
    })
}
実行
go test-bench=「.」
  • -parallel 50設定併設
  • -count n設定回数
  • testings.T
    判定失敗インターフェース
  • Fail失敗続き
  • FailNow失敗
  • 終了
    印刷情報インターフェース
  • Logデータストリーム(cout類似)
  • Logf format(printf類似)
  • SkipNowは、現在のテスト
  • をスキップします。
  • Skipedは
  • をスキップしたかどうかを検出する。
    複合インターフェース生成:
  • Error/Errowrf報告エラー続き[Log/Logf+Fail]
  • Fatel/Fatelfレポートエラー終了[Log/Logf+FailNow]
  • Skip/Skipfレポートとスキップ[Log/Logf+SkipNow]
  • testings.B
    まず、testings.Bはtesting.Tのすべてのインターフェースを持っています。
  • SetBytes(i uint 64)の統計メモリの消費量は、必要ならば
  • です。
  • SetParalelism(p int)は、並列数を指定します。
  • StartTimer/StopTimer/RestertTimer操作タイマ
  • testing.PB
  • Next()インターフェース。ループを継続するかどうか判断する
  • 注意点
  • ファイルはtest.goの最後の
  • が必要です。