Golang 単体テストでパフォーマンス テストを行うにはどうすればよいですか?

WBOY
リリース: 2024-06-04 16:05:03
オリジナル
695 人が閲覧しました

Golang 単体テストでパフォーマンス テストを実行する方法: テスト パッケージの Benchmark 関数を使用して、ベンチマーク テストを定義します。 Benchstat パッケージを統合すると、統計結果やレポートの生成など、より高度な機能が実現します。メモリ割り当てのスラッシングを防ぐには、コード内で事前に割り当てられたスライスを使用します。 Benchstat.Plot 関数を使用して視覚的なレポートを生成します。ベンチマーク テストを実行するには、コマンドは次のとおりです: go test -bench=.

如何在 Golang 单元测试中进行性能测试?

Golang 単体テストでパフォーマンス テストを実行するにはどうすればよいですか?

はじめに

分散システムを開発する場合、パフォーマンス テストは非常に重要です。これは、高負荷時のシステムの動作を評価し、ボトルネックを見つけるのに役立ちます。パフォーマンス テストに利用できるツールは数多くありますが、開発プロセスの早い段階で問題を検出できるため、パフォーマンス テストを単体テストに統合することは理にかなっています。

この記事では、testing パッケージと benchstat パッケージを使用して Go 単体テストでパフォーマンス テストを実行する方法を紹介します。 testingbenchstat 包执行性能测试。

使用 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)
}
ログイン後にコピー

我们可以使用 testingbenchstat 对它进行基准测试:

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🎜 testingbenchstat を使用してベンチマークできます: 🎜rrreee🎜 ここでは、スラッシングを防ぐために results スライスを事前に割り当てましたメモリ割り当てが原因で発生します。また、benchstat.Plot 関数を使用して、ベンチマーク結果の視覚的なレポートを生成しました。 🎜🎜🎜ベンチマークを実行する🎜🎜🎜ターミナルでベンチマークを実行するには、次のコマンドを使用します: 🎜rrreee🎜これにより、Benchmark というプレフィックスが付いたすべての関数が実行され、パフォーマンス テスト レポートが生成されます。 🎜

以上がGolang 単体テストでパフォーマンス テストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート