Heim > Artikel > Backend-Entwicklung > Leistungsbenchmarking beim Golang-Funktionstest
Leistungsbenchmarks in Go messen die Funktionseffizienz und werden implementiert, indem Benchmark-Code in Funktionen geschrieben wird, die mit Benchmark beginnen. Der Typ „testing.B“ stellt die Eigenschaften „ResetTimer()“, „StopTimer()“ und „N“ zur Steuerung des Benchmark-Verhaltens bereit. Ein Benchmark der Funktion, die Fibonacci-Zahlen berechnet, zeigt beispielsweise, dass die Ausführung von Fib(30) etwa 2.767.425 Nanosekunden dauert. Optimieren Sie den Benchmark-Code, um Overhead zu vermeiden, und führen Sie ihn mehrmals aus, um genaue Ergebnisse zu erzielen.
Leistungsbenchmarking beim Go-Funktionstest
Leistungsbenchmarking ist ein wichtiges Instrument zur Messung der Funktionseffizienz. In Go bietet das Paket testing
Funktionen zum Benchmarking der Funktionsausführungszeiten. 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
beginnt, gefolgt vom Namen der zu testenden Funktion: testing.B
bietet die folgenden Methoden zur Steuerung des Benchmarks: 🎜ResetTimer()
: Setzen Sie den Timer zurück. 🎜🎜StopTimer()
: Stoppen Sie den Timer und zeichnen Sie die Zeit auf. 🎜🎜N
: Die Häufigkeit, mit der der Benchmark-Test durchgeführt wird. 🎜🎜🎜🎜Praktisches Beispiel🎜🎜🎜Machen wir einen Benchmark für eine Funktion, die Fibonacci-Zahlen berechnet: 🎜rrreee🎜Führen Sie den Test im Terminal aus: 🎜rrreee🎜Die Ausgabe sieht folgendermaßen aus: 🎜rrreee🎜Das bedeutet, dass 30 Der Benchmark-Test zur Ausführung verwendet wird Die Funktion Fib
als Parameter benötigt etwa 2.767.425 Nanosekunden (2767 Millisekunden). 🎜🎜🎜Tipp🎜🎜-benchmem
, um die Speicherzuordnung des Benchmarks zu messen. 🎜🎜Optimieren Sie den Benchmark-Code, um Overhead wie die Erstellung unnötiger Variablen zu vermeiden. 🎜🎜Führen Sie den Benchmark mehrmals aus, um genauere Ergebnisse zu erhalten. 🎜🎜Das obige ist der detaillierte Inhalt vonLeistungsbenchmarking beim Golang-Funktionstest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!