Go 関数のパフォーマンス ベンチマーク
ベンチマークは、関数またはコード部分のパフォーマンスを測定するための重要なツールです。これは、ボトルネックの特定、コードの最適化、アプリケーションのスケーラビリティの確保に役立ちます。 Go は、ベンチマーク テストを実行するための組み込みの testing
パッケージを提供します。
ベンチマーク テストを設定する
ベンチマーク テストを設定するには、Benchmark
関数を で作成する必要があります。テスト
パッケージ。この関数の命名規則は Benchmark<functionname></functionname>
.
import ( "testing" ) func BenchmarkExample(b *testing.B) { // 基准测试代码 }
b
です。パラメータは testing.B 型のポインタで、ベンチマークを実行するさまざまな方法。
ベンチマーク テストの実行
ベンチマーク テストを実行するには、コマンド ラインで go test
コマンドを使用し、 を指定します。 -bench
フラグ。
go test -bench=.
これにより、Benchmark
で始まるすべての関数がベンチマークとして実行されます。
測定結果
testing
このパッケージは、ベンチマーク テスト用に次のようなさまざまな統計情報を収集します。
実践例: 文字列の等価性の比較
2 つの文字列が等しいかどうかを比較するための 2 つの一般的な Go メソッドを考えてみましょう:
// 使用 == 操作符 func equals1(a, b string) bool { return a == b } // 使用 strings.EqualFold 函数 func equals2(a, b string) bool { return strings.EqualFold(a, b) }これらを比較するには、パフォーマンスのためです。
func BenchmarkEquals(b *testing.B) { a := "example" b := "Example" for i := 0; i < b.N; i++ { equals1(a, b) } for i := 0; i < b.N; i++ { equals2(a, b) } }このベンチマークを実行すると、
equals1
がequals2 よりも大幅に高速であることがわかります。これは、
== 演算子がビットごとの比較を実行するのに対し、
strings.EqualFold も大文字と小文字を区別しない文字列比較を実行するためです。
以上がgolang関数のパフォーマンスベンチマークテストについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。