個人的にメモ。
原始的だが time.Time
パッケージを使って、終了時間から開始時間をSubする。
func BenchFuncSeconds(f func() error) error {
st := time.Now()
err := f()
if err != nil {
return err
}
ed := time.Now()
log.Printf("Time %v", ed.Sub(st))
return nil
}
例えば、下記の関数を計測するとする。
func GetHelloList(name string, count int) []string {
var list []string
for i:=0;i<count;i++ {
list = append(list, fmt.Sprintf("Hello %s\n", name))
}
return list
}
BenchFuncSeconds
の引数は(f func() error
なのでname string, count int)
を引数に受け取り、[]string
を返り値に持つGetHelloList
は一見計測できないように見える。
が、下記のように即時関数内func() error
で実行してやることで型の違いを気にせずに実行できるようになる。
func main() {
_ = BenchFuncSeconds(func() error {
_ = GetHelloList("Tarou", 99999)
return nil
})
}