Go의 성능 벤치마크는 기능 효율성을 측정하고 Benchmark로 시작하는 함수에 벤치마크 코드를 작성하여 구현됩니다. test.B 유형은 벤치마크 동작을 제어하기 위해 ResetTimer(), StopTimer() 및 N 속성을 제공합니다. 예를 들어 피보나치 수를 계산하는 함수의 벤치마크에서는 Fib(30)을 실행하는 데 약 2,767,425나노초가 소요되는 것으로 나타났습니다. 오버헤드를 방지하고 정확한 결과를 위해 여러 번 실행하도록 벤치마크 코드를 최적화하세요.
Go 기능 테스트의 성능 벤치마킹
성능 벤치마킹은 기능 효율성을 측정하는 중요한 도구입니다. Go에서 testing
패키지는 함수 실행 시간을 벤치마킹하는 기능을 제공합니다. testing
包提供了针对函数执行时间的基准测试功能。
编写性能基准测试
编写一个性能基准测试需要创建一个以 Benchmark
开头的函数,后面跟上要测试的函数名:
func BenchmarkFib(b *testing.B) { // 基准测试代码 }
使用 testing.B
testing.B
类型提供以下方法来控制基准测试:
ResetTimer()
: 重置计时器。StopTimer()
: 停止计时器并记录时间。N
: 执行基准测试的次数。实战案例
让我们对一个计算斐波那契数的函数进行基准测试:
func Fib(n int) int { if n <= 1 { return n } return Fib(n-1) + Fib(n-2) } func BenchmarkFib(b *testing.B) { for i := 0; i < b.N; i++ { Fib(30) } }
在终端中运行测试:
go test -bench=.
输出将如下所示:
BenchmarkFib 2767425 ns/op
这意味着用 30 作为参数执行 Fib
函数的基准测试需要大约 2,767,425 纳秒(2767 毫秒)。
提示
-benchmem
Benchmark
로 시작하고 그 뒤에 테스트할 함수 이름이 오는 함수를 만들어야 합니다: testing.B
유형은 벤치마크를 제어하기 위해 다음과 같은 메서드를 제공합니다. 🎜ResetTimer()
: 타이머를 재설정합니다. 🎜🎜StopTimer()
: 타이머를 중지하고 시간을 기록합니다. 🎜🎜N
: 벤치마크 테스트가 수행되는 횟수입니다. 🎜🎜🎜🎜실용 예🎜🎜🎜피보나치 수를 계산하는 함수를 벤치마킹해 보겠습니다. 🎜rrreee🎜터미널에서 테스트를 실행합니다. 🎜rrreee🎜출력은 다음과 같습니다. 🎜rrreee🎜이는 30을 사용하는 것을 의미합니다. Fib
함수가 매개변수로 사용되는 시간은 약 2,767,425나노초(2767밀리초)입니다. 🎜🎜🎜Tip🎜🎜-benchmem
플래그를 사용하세요. 🎜🎜불필요한 변수 생성 등의 오버헤드를 방지하려면 벤치마크 코드를 최적화하세요. 🎜🎜더 정확한 결과를 얻으려면 벤치마크를 여러 번 실행하세요. 🎜🎜위 내용은 Golang 기능 테스트의 성능 벤치마킹의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!