ホームページ >バックエンド開発 >Golang >Golang 関数テストのパフォーマンス ベンチマーク

Golang 関数テストのパフォーマンス ベンチマーク

WBOY
WBOYオリジナル
2024-04-12 18:15:02607ブラウズ

Go のパフォーマンス ベンチマークは、Benchmark で始まる関数内にベンチマーク コードを記述することで関数の効率を測定します。 testing.B タイプは、ベンチマーク動作を制御するための ResetTimer()、StopTimer()、および N プロパティを提供します。たとえば、フィボナッチ数を計算する関数のベンチマークは、Fib(30) の実行に約 2,767,425 ナノ秒かかることを示しています。ベンチマーク コードを最適化してオーバーヘッドを回避し、正確な結果を得るために複数回実行します。

Golang 函数测试中的性能基准测试

Go 関数テストにおけるパフォーマンス ベンチマーク

パフォーマンス ベンチマークは、関数の効率を測定するための重要なツールです。 Go では、testing パッケージは関数の実行時間をベンチマークする機能を提供します。

パフォーマンス ベンチマーク テストの作成

パフォーマンス ベンチマーク テストを作成するには、Benchmark で始まり、その後に関数名が続く関数を作成する必要があります。テスト対象:

func BenchmarkFib(b *testing.B) {
    // 基准测试代码
}

testing.B

testing.B タイプを使用すると、ベンチマークを制御するための次のメソッドが提供されます:

  • ResetTimer(): タイマーをリセットします。
  • StopTimer(): タイマーを停止し、時間を記録します。
  • N: ベンチマーク テストが実行された回数。

実践的なケース

フィボナッチ数を計算する関数のベンチマークを行ってみましょう:

func Fib(n int) int {
    if n <= 1 {
        return n
    }
    return Fib(n-1) + Fib(n-2)
}

func BenchmarkFib(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Fib(30)
    }
}

ターミナルで実行しますテスト:

go test -bench=.

出力は次のようになります:

BenchmarkFib  2767425 ns/op

これは、引数として 30 を指定して Fib 関数を実行するベンチマークには約 2,767,425 ナノ秒 (2767 ミリ秒) かかることを意味します。

ヒント

  • -benchmem フラグを使用して、ベンチマークのメモリ割り当てを測定します。
  • ベンチマーク コードを最適化して、不要な変数の作成などのオーバーヘッドを回避します。
  • より正確な結果を得るには、ベンチマークを複数回実行します。

以上がGolang 関数テストのパフォーマンス ベンチマークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。