GOの組み込みテストパッケージは、ベンチマークコードのための強力で簡単なメカニズムを提供します。ベンチマークは、 testing.b
タイプを使用する関数であり、コードの実行と結果を報告する方法を提供します。ベンチマークを作成するには、*testing.b
をその引数として取得する関数を書き込みます。 testing.b
タイプは、 bn
フィールドを提供します。これは、ベンチマーク関数を実行する回数を表します。 bn
値は、統計的に有意な結果を見つけるために、 go test
コマンドによって自動的に調整されます。ベンチマーク関数内では、通常、 bn
の回転を繰り返し、ベンチマークするコードを実行するループを使用します。
簡単な例は次のとおりです。 func add(x、y int)int {return xy} func benchmarkadd(b *testing.b){for i:= 0; I< bn; i {add(1、2)}}
このベンチマークを実行するには、 mypackage_test.go
という名前のファイルに保存し、コマンド go test -bench =。
を実行します。これにより、パッケージ内のすべてのベンチマーク関数が実行されます。
効率的なベンチマークを作成するためのベストプラクティスは何ですか?
効果的なベンチマークを作成するには、正確性と信頼性を確保するために慎重に検討する必要があります。いくつかの重要なベストプラクティスは次のとおりです。
go test> go test>コマンドは、システムパフォーマンスのランダムな変動の影響を減らすためにベンチマークを複数回実行します。ベンチマークが統計的に意味のある結果を得るのに十分な回数を実行していることを確認してください。 <code> -count
フラグを使用して、反復数を指定できます。
n
)、総時間、および反復あたりの時間(ナノ秒で表現されることが多い)が表示されます。たとえば、 <code> benchmarkAdd-8 1000000000 0.20 ns/op </code>
この行は、 benchmarkadd
関数が10億回実行されたことを示しています( n = 1000000000
)、合計時間は否定的であり、平均的な時間は稼働時間でした。 「-8」は、ベンチマークが8コアマシンで実行されたことを示します。
ns/op
(操作あたりのナノ秒)値に細心の注意を払ってください。このメトリックは、コードのパフォーマンスを直接反映しています。値が低いと、パフォーマンスが向上します。さまざまなベンチマークで/op
値を比較すると、さまざまなアプローチまたはコード最適化の相対的なパフォーマンスを評価できます。 Go Garbage Collectorは、特に頻繁な割り当てを伴うベンチマークで、パフォーマンスに大きな影響を与える可能性があります。その潜在的な影響に注意し、割り当てを最小限に抑えてみてください。 pprof
のようなツールを使用すると、ガベージコレクションがパフォーマンスに影響を与える領域を特定するのに役立ちます。
-gcflags =&quot; -m&quot;
のようなコンパイラフラグを使用するには、生成されたアセンブリコードを分析することを検討してください。 testing.b
のタイミング関数を使用してください。これらのベストプラクティスに従い、一般的な落とし穴を回避することにより、GOコードのパフォーマンスに関する貴重な洞察を提供する正確で意味のあるベンチマークを書くことができます。
以上がコードをベンチマークするためにGOのテストフレームワークを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。