私は自分のプログラムのパフォーマンス特性をデバッグしようとしているので、golang ブログのチュートリアルに従っています。しかし、自分の関数を調査したり、結果のプロファイリング出力を呼び出すことができない小さな問題が 1 つあります。このコマンドを使用してバイナリをビルドしています。
go build -ldflags "-s -extldflags -static" -a -installsuffix cgo -o bin/brains
そして、go ツール pprof を使用して結果を調べると、
(pprof) top10 -cum
2.38mins of 5.25mins total (45.32%)
Dropped 125 nodes (cum <= 0.03mins)
Showing top 10 nodes out of 82 (cum >= 0.81mins)
flat flat% sum% cum cum%
0.33mins 6.24% 6.24% 4.82mins 91.69% encoding/xml.(*printer).marshalStruct
0.77mins 14.62% 20.86% 4.07mins 77.51% [brains]
0.04mins 0.79% 21.64% 1.92mins 36.50% encoding/xml.(*printer).writeEnd
0.12mins 2.24% 23.88% 1.47mins 28.06% encoding/xml.(*Decoder).unmarshal
0.31mins 5.83% 29.71% 1.27mins 24.14% github.com/aws/aws-sdk-go/vendor/github.com/jmespath/go-jmespath.(*Parser).nud
0.02mins 0.41% 30.12% 1.07mins 20.43% golang.org/x/net/html.parseForeignContent
0.52mins 9.89% 40.00% 0.98mins 18.64% golang.org/x/net/html.render1
0.15mins 2.76% 42.77% 0.95mins 18.01% github.com/aws/aws-sdk-go/vendor/github.com/jmespath/go-jmespath.(*Parser).parseMultiSelectHash
0.10mins 2.00% 44.77% 0.83mins 15.86% golang.org/x/net/html.initialIM
0.03mins 0.55% 45.32% 0.81mins 15.42% golang.org/x/net/html.beforeHeadIM
ご覧のとおり、[brains] パッケージに多くの時間が費やされていますが、他のパッケージと同様に、どの機能の詳細がわかりません! もちろん、私はおそらく非常にばかげた間違ったことをしているので、誰かが私の間違いに気づいたら、それを指摘していただければ非常にありがたいです:D
ps: Linux 環境でプロファイリングを行い、Macbook で分析を行っていますが、バイナリは両方の環境で静的に同じようにビルドされるため、問題にはならないと思います。
ありがとう、
ニールス