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

WBOY
リリース: 2024-04-12 18:15:02
オリジナル
557 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!