0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go 言語を学ぶAdvent Calendar 2023

Day 23

Goのベンチマークをとる

Posted at

ベンチマーク

Goには標準関数でベンチマークを計測するものがあるので、試してみます。
ベンチマーク対象はフィボナッチ数列を計算する関数です。

フィボナッチ数列の計算

main.go
package main

func Fibonacci(n int) int {
	if n <= 1 {
		return n
	}
	return Fibonacci(n-1) + Fibonacci(n-2)
}

ベンチマーク関数の作成

main_test.go
package main

import "testing"

func BenchmarkFibonacci(b *testing.B) {
	for i := 0; i < b.N; i++ {
		Fibonacci(10)
	}
}

特徴は*testing.B型を渡していること、関数名の接頭辞がBenchmarkであることです。

ベンチマーク実行

$ go test -bench=BenchmarkFibonacci

結果

$ go test -bench=BenchmarkFibonacci
goos: darwin
goarch: arm64
pkg: app
BenchmarkFibonacci-10    	 6455626	       186.2 ns/op
PASS
ok  	github.com/shuyaeer/learn-go/app/day23	1.492s

この関数は6455626回呼び出され、1回の呼出しは186.2 ns程のようです。
すべての回数呼び出すのに1.492sかかったということを表しています。

テストだけではなく、ベンチマークを取ることでパフォーマンス改善にやくだてられそうですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?