>백엔드 개발 >Golang >Golang 기능 테스트의 성능 벤치마킹

Golang 기능 테스트의 성능 벤치마킹

WBOY
WBOY원래의
2024-04-12 18:15:02607검색

Go의 성능 벤치마크는 기능 효율성을 측정하고 Benchmark로 시작하는 함수에 벤치마크 코드를 작성하여 구현됩니다. test.B 유형은 벤치마크 동작을 제어하기 위해 ResetTimer(), StopTimer() 및 N 속성을 제공합니다. 예를 들어 피보나치 수를 계산하는 함수의 벤치마크에서는 Fib(30)을 실행하는 데 약 2,767,425나노초가 소요되는 것으로 나타났습니다. 오버헤드를 방지하고 정확한 결과를 위해 여러 번 실행하도록 벤치마크 코드를 최적화하세요.

Golang 函数测试中的性能基准测试

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로 시작하고 그 뒤에 테스트할 함수 이름이 오는 함수를 만들어야 합니다:
rrreee🎜🎜testing.B를 사용하세요.B🎜🎜 🎜testing.B 유형은 벤치마크를 제어하기 위해 다음과 같은 메서드를 제공합니다. 🎜
    🎜ResetTimer(): 타이머를 재설정합니다. 🎜🎜StopTimer(): 타이머를 중지하고 시간을 기록합니다. 🎜🎜N: 벤치마크 테스트가 수행되는 횟수입니다. 🎜🎜🎜🎜실용 예🎜🎜🎜피보나치 수를 계산하는 함수를 벤치마킹해 보겠습니다. 🎜rrreee🎜터미널에서 테스트를 실행합니다. 🎜rrreee🎜출력은 다음과 같습니다. 🎜rrreee🎜이는 30을 사용하는 것을 의미합니다. Fib 함수가 매개변수로 사용되는 시간은 약 2,767,425나노초(2767밀리초)입니다. 🎜🎜🎜Tip🎜🎜
      🎜벤치마크의 메모리 할당을 측정하려면 -benchmem 플래그를 사용하세요. 🎜🎜불필요한 변수 생성 등의 오버헤드를 방지하려면 벤치마크 코드를 최적화하세요. 🎜🎜더 정확한 결과를 얻으려면 벤치마크를 여러 번 실행하세요. 🎜🎜

위 내용은 Golang 기능 테스트의 성능 벤치마킹의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.