いくつかの golang アプリケーションのプロファイルを作成しようとしましたが、うまくいきませんでした。次の 2 つのチュートリアルに従いました。
- http://blog.golang.org/profiling-go-programs
- http://saml.rilspace.org/profiling-and-creating-call-graphs-for-go-programs-with-go-tool-pprof
どちらも、アプリケーションにいくつかのコード行を追加した後、アプリを実行する必要があると言っています。私はそれを実行しましたが、画面に次のメッセージが表示されました。
2015/06/16 12:04:00 プロファイル: CPU プロファイリングが有効、/var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
したがって、プロファイリングが実行され、ファイルに情報が送信されていることがわかりました。
しかし、ファイル サイズを見ると、テストしたどのプログラムでも常に 64 バイトです。
cpu.pprof ファイルを pprof で開こうとして「top10」コマンドを実行すると、ファイルに何も入っていないことがわかります。
(「./fact」は私のアプリです)
go tool pprof ./fact /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
トップ10 -->
(pprof) top10 0 of 0 total ( 0%) flat flat% sum% cum cum%
だから、私がプロファイリングしているときは何も起こっていないようです。
Mac(この例)とubuntuで、3つの異なるプログラムでテストしました。
私が間違っていることを知っていますか?
次に、サンプル プログラムは非常に単純です。これがコードです (インターネットから取得した非常に単純な階乗プログラムです)。
import "fmt"
import "github.com/davecheney/profile"
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
defer profile.Start(profile.CPUProfile).Stop()
fmt.Println(fact(30))
}
ありがとう、フェル