Maison > développement back-end > Golang > le corps du texte

Comment faire des tests de performances dans les tests unitaires Golang ?

WBOY
Libérer: 2024-06-04 16:05:03
original
691 Les gens l'ont consulté

Comment effectuer des tests de performances dans les tests unitaires Golang : utilisez la fonction Benchmark du package de tests pour définir un test de référence. Intégrez le package benchstat pour des fonctionnalités plus avancées, notamment des résultats statistiques et la génération de rapports. Utilisez des tranches pré-allouées dans votre code pour éviter les problèmes d'allocation de mémoire. Utilisez la fonction benchstat.Plot pour générer des rapports visuels. Pour exécuter le test de référence, la commande est : go test -bench=.

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

Comment effectuer des tests de performances dans les tests unitaires Golang ?

Introduction

Lors du développement de systèmes distribués, les tests de performances sont cruciaux, ils peuvent nous aider à évaluer le comportement du système sous une charge élevée et à trouver les goulots d'étranglement. Bien qu'il existe de nombreux outils disponibles pour les tests de performances, il est logique d'intégrer les tests de performances dans nos tests unitaires car cela nous permet de détecter les problèmes dès le début du processus de développement.

Cet article explique comment utiliser les packages testing et benchstat pour effectuer des tests de performances dans les tests unitaires Go. testingbenchstat 包执行性能测试。

使用 testing

testing 是 Go 标准库的一部分,它提供了用于编写单元测试的功能。它允许我们使用 Benchmark 函数来定义基准测试,如:

import (
    "testing"
)

func BenchmarkName(b *testing.B) {
    // 执行要测试的代码
    for n := 0; n < b.N; n++ {
        // ...
    }
}
Copier après la connexion

testing.B 类型提供了一些函数,用于控制基准测试的运行,例如:

  • N:指定基准测试要运行的重复次数。
  • StopTimer:停止基准测试计时器。
  • StartTimer:启动基准测试计时器。

使用 benchstat

benchstat 是一个第三方包,它提供了更高级的性能测试功能,例如统计基准测试结果和生成报告。我们可以使用它来生成不易出现统计偏差的更准确的结果。

要使用 benchstat, 需要安装它:

go get github.com/uber/benchstat
Copier après la connexion

接下来,在测试文件中导入它:

package main

import (
    "testing"
    "time"

    "github.com/uber/benchstat"
)
Copier après la connexion

实战案例

考虑一个简单的函数,将字符串转换为大写:

import "strings"

func ToUpper(s string) string {
    return strings.ToUpper(s)
}
Copier après la connexion

我们可以使用 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...)
}
Copier après la connexion

在这里,我们预先分配了 results 切片以防止因内存分配而造成的抖动。我们还使用了 benchstat.Plot 函数来生成基准测试结果的可视化报告。

运行基准测试

要在终端中运行基准测试,请使用以下命令:

go test -bench=.
Copier après la connexion

这将运行所有带有 Benchmark

🎜Utilisation du package testing 🎜🎜🎜testing fait partie de la bibliothèque standard Go et fournit des fonctionnalités pour l'écriture de tests unitaires. Il nous permet d'utiliser la fonction Benchmark pour définir des tests de benchmark, tels que : 🎜rrreee🎜 Le type testing.B fournit certaines fonctions pour contrôler l'exécution des tests de benchmark, comme comme : 🎜
  • N : Spécifie le nombre de répétitions pour le benchmark à exécuter.
  • StopTimer : arrête le chronomètre de référence.
  • StartTimer : démarre le chronomètre de référence.
🎜🎜Utilisez le package benchstat 🎜🎜🎜benchstat est un package tiers qui fournit des fonctions de test de performances plus avancées, telles que des tests de performances statistiques Testez les résultats et générez des rapports. Nous pouvons utiliser cela pour générer des résultats plus précis et moins sujets aux biais statistiques. 🎜🎜Pour utiliser benchstat, vous devez l'installer : 🎜rrreee🎜Ensuite, importez-le dans le fichier de test : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Considérons une fonction simple qui convertit une chaîne en Upper cas : 🎜rrreee🎜 Nous pouvons le comparer en utilisant testing et benchstat : 🎜rrreee🎜Ici, nous avons pré-attribué la tranche results pour éviter les raclées causé par l’allocation de mémoire. Nous avons également utilisé la fonction benchstat.Plot pour générer un rapport visuel des résultats du benchmark. 🎜🎜🎜Exécuter des benchmarks🎜🎜🎜Pour exécuter des benchmarks dans le terminal, utilisez la commande suivante : 🎜rrreee🎜Cela exécutera toutes les fonctions préfixées par Benchmark et générera un rapport de test de performances. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!