Golang 단위 테스트에서 성능 테스트를 수행하는 방법: 테스트 패키지의 벤치마크 기능을 사용하여 벤치마크 테스트를 정의합니다. 통계 결과 및 보고서 생성을 포함한 고급 기능을 위해 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로 변환하는 간단한 함수를 생각해 보세요. 사례: 🎜rrreee🎜 testing
및 benchstat
을 사용하여 벤치마킹할 수 있습니다. 🎜rrreee🎜여기서는 스래싱을 방지하기 위해 results
슬라이스를 미리 할당했습니다. 메모리 할당으로 인해 발생합니다. 또한 benchstat.Plot
함수를 사용하여 벤치마크 결과에 대한 시각적 보고서를 생성했습니다. 🎜🎜🎜벤치마크 실행🎜🎜🎜터미널에서 벤치마크를 실행하려면 다음 명령을 사용하세요. 🎜rrreee🎜이렇게 하면 Benchmark
접두어가 붙은 모든 함수가 실행되고 성능 테스트 보고서가 생성됩니다. 🎜위 내용은 Golang 단위 테스트에서 성능 테스트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!