Maison >développement back-end >Golang >Analyse comparative des performances dans les tests de fonctions Golang

Analyse comparative des performances dans les tests de fonctions Golang

WBOY
WBOYoriginal
2024-04-12 18:15:02606parcourir

Les benchmarks de performances dans Go mesurent l'efficacité des fonctions et sont implémentés en écrivant du code de référence dans les fonctions commençant par Benchmark. Le type testing.B fournit les propriétés ResetTimer(), StopTimer() et N pour contrôler le comportement du benchmark. Par exemple, un test de la fonction qui calcule les nombres de Fibonacci montre que l'exécution de Fib(30) prend environ 2 767 425 nanosecondes. Optimisez le code de référence pour éviter les frais généraux et exécutez-le plusieurs fois pour obtenir des résultats précis.

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

Analyse comparative des performances dans les tests de fonctions Go

L'analyse comparative des performances est un outil important pour mesurer l'efficacité des fonctions. Dans Go, le package testing fournit des fonctionnalités permettant d'évaluer les temps d'exécution des fonctions. 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
  • Rédiger un benchmark de performances
  • Rédiger un benchmark de performances nécessite de créer une fonction commençant par Benchmark, suivi du nom de la fonction à tester :
rrreee🎜🎜Utiliser testing.B🎜🎜 Le type 🎜testing.B fournit les méthodes suivantes pour contrôler le benchmark : 🎜
    🎜ResetTimer() : réinitialise le timer. 🎜🎜StopTimer() : Arrêtez le chronomètre et enregistrez l'heure. 🎜🎜N : Le nombre de fois que le test de référence est effectué. "Exemple pratique" La fonction code>Fib en tant que paramètre prend environ 2 767 425 nanosecondes (2 767 millisecondes). 🎜🎜🎜Astuce🎜🎜
      🎜Utilisez l'indicateur -benchmem pour mesurer l'allocation de mémoire du benchmark. 🎜🎜Optimisez le code de référence pour éviter les frais généraux tels que la création de variables inutiles. 🎜🎜Exécutez le benchmark plusieurs fois pour des résultats plus précis. 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn