Golang 単体テストでパフォーマンス テストを実行する方法: テスト パッケージの Benchmark 関数を使用して、ベンチマーク テストを定義します。 Benchstat パッケージを統合すると、統計結果やレポートの生成など、より高度な機能が実現します。メモリ割り当てのスラッシングを防ぐには、コード内で事前に割り当てられたスライスを使用します。 Benchstat.Plot 関数を使用して視覚的なレポートを生成します。ベンチマーク テストを実行するには、コマンドは次のとおりです: go test -bench=.
はじめに
分散システムを開発する場合、パフォーマンス テストは非常に重要です。これは、高負荷時のシステムの動作を評価し、ボトルネックを見つけるのに役立ちます。パフォーマンス テストに利用できるツールは数多くありますが、開発プロセスの早い段階で問題を検出できるため、パフォーマンス テストを単体テストに統合することは理にかなっています。
この記事では、testing
パッケージと benchstat
パッケージを使用して Go 単体テストでパフォーマンス テストを実行する方法を紹介します。 testing
和 benchstat
包执行性能测试。
使用 testing
包
testing
是 Go 标准库的一部分,它提供了用于编写单元测试的功能。它允许我们使用 Benchmark
函数来定义基准测试,如:
import ( "testing" ) func BenchmarkName(b *testing.B) { // 执行要测试的代码 for n := 0; n < b.N; n++ { // ... } }
testing.B
类型提供了一些函数,用于控制基准测试的运行,例如:
N
:指定基准测试要运行的重复次数。StopTimer
:停止基准测试计时器。StartTimer
:启动基准测试计时器。使用 benchstat
包
benchstat
是一个第三方包,它提供了更高级的性能测试功能,例如统计基准测试结果和生成报告。我们可以使用它来生成不易出现统计偏差的更准确的结果。
要使用 benchstat
, 需要安装它:
go get github.com/uber/benchstat
接下来,在测试文件中导入它:
package main import ( "testing" "time" "github.com/uber/benchstat" )
实战案例
考虑一个简单的函数,将字符串转换为大写:
import "strings" func ToUpper(s string) string { return strings.ToUpper(s) }
我们可以使用 testing
和 benchstat
对它进行基准测试:
func BenchmarkToUpper(b *testing.B) { s := "hello world" // 或任何其他字符串 // 预先分配切片,防止因分配内存而产生的抖动 results := make([]int64, b.N) for n := 0; n < b.N; n++ { b.StartTimer() results[n] = len(ToUpper(s)) b.StopTimer() } benchstat.Plot(b, "ToUpper", results, benchstat.DefaultPlotOptions...) }
在这里,我们预先分配了 results
切片以防止因内存分配而造成的抖动。我们还使用了 benchstat.Plot
函数来生成基准测试结果的可视化报告。
运行基准测试
要在终端中运行基准测试,请使用以下命令:
go test -bench=.
这将运行所有带有 Benchmark
testing
パッケージの使用🎜🎜🎜testing
は Go 標準ライブラリの一部であり、単体テストを作成するための機能を提供します。 Benchmark
関数を使用して、次のようなベンチマーク テストを定義できるようになります。 🎜rrreee🎜 testing.B
タイプは、ベンチマーク テストの実行を制御するためのいくつかの関数を提供します。 as: 🎜 N
: 実行するベンチマークの繰り返し回数を指定します。 StopTimer
: ベンチマーク タイマーを停止します。 StartTimer
: ベンチマーク タイマーを開始します。 benchstat
パッケージを使用します 🎜🎜🎜benchstat
は、統計ベンチマークなど、より高度なパフォーマンス テスト機能を提供するサードパーティ パッケージです。結果をテストし、レポートを生成します。これを使用すると、統計的バイアスがかかりにくい、より正確な結果を生成できます。 🎜🎜benchstat
を使用するには、それをインストールする必要があります: 🎜rrreee🎜次に、テスト ファイルにインポートします: 🎜rrreee🎜🎜実用的なケース🎜🎜🎜文字列を Upper に変換する単純な関数を考えてみましょうcase: 🎜rrreee🎜 testing
と benchstat
を使用してベンチマークできます: 🎜rrreee🎜 ここでは、スラッシングを防ぐために results
スライスを事前に割り当てましたメモリ割り当てが原因で発生します。また、benchstat.Plot
関数を使用して、ベンチマーク結果の視覚的なレポートを生成しました。 🎜🎜🎜ベンチマークを実行する🎜🎜🎜ターミナルでベンチマークを実行するには、次のコマンドを使用します: 🎜rrreee🎜これにより、Benchmark
というプレフィックスが付いたすべての関数が実行され、パフォーマンス テスト レポートが生成されます。 🎜以上がGolang 単体テストでパフォーマンス テストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。