К сожалению, сабж весьма скудно документирован, но при этом снабжен очень крутым набором инструментов! Основной источник: http://blog.golang.org/profiling-go-programs
Мы сейчас говорим исключительно о профайлинге по потреблению CPU. Для начала нужно добавить в программу следующее:
Мы сейчас говорим исключительно о профайлинге по потреблению CPU. Для начала нужно добавить в программу следующее:
import "runtime/pprof"Потом добавляем в функцию main в самом начале:
import "flag"
import "log"
flag.Parse()И запускаем программу со следующими аргументами:
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
./gordiff -cpuprofile=gordiff.profЗапускаем профайлер:
go tool pprof gordiff gordiff.profСмотрим результаты введя в его терминале команду top10:
(pprof) top10
Total: 426 samples
338 79.3% 79.3% 338 79.3% code.google.com/p/go.crypto/md4._Block
57 13.4% 92.7% 57 13.4% main.faster_rollsum
21 4.9% 97.7% 21 4.9% syscall.Syscall
10 2.3% 100.0% 10 2.3% runtime.memmove
0 0.0% 100.0% 21 4.9% System
0 0.0% 100.0% 10 2.3% bufio.(*Reader).Read
0 0.0% 100.0% 338 79.3% code.google.com/p/go.crypto/md4.(*digest).Write
0 0.0% 100.0% 405 95.1% main.generate_signature
0 0.0% 100.0% 405 95.1% main.main
0 0.0% 100.0% 405 95.1% runtime.gosched0
No comments :
Post a Comment
Note: only a member of this blog may post a comment.