次のおもちゃのコードを考えると、私はなぜプロファイラが動作しないのですか?
go tool pprof cpu.prof
を実行し、waster1とwaster2に関する有用な情報を得ることができることを期待するが、私はpprofでトップを実行したときに、私が得るすべては次のとおりです。
Showing nodes accounting for 0, 0% of 0 total
flat flat% sum% cum cum%
package main
import (
"fmt"
"log"
"os"
"runtime/pprof"
)
func waster2() int {
j := 0;
for i := 0; i < 100; i++ {
j += waster1()
}
return j
}
func waster1() int {
j := 0;
for i := 0; i < 10000; i++ {
j++
}
return j
}
func main() {
f, err := os.Create("cpu.prof")
if err != nil {
log.Fatal("could not create CPU profile: ", err)
}
if err := pprof.StartCPUProfile(f); err != nil {
log.Fatal("could not start CPU profile: ", err)
}
defer pprof.StopCPUProfile()
j := waster2()
fmt.Println(j)
}
:
ことが可能であるという問題は、私はここで
のWindows 10上のUbuntuを実行するようにWSLを使用していますということですが、私が使用していたコードです
上のUbuntuを実行するようにWSLを使用していることは、それ自体がDebianのランニングで同じことをしているように見えますので、Windowsの10の事は赤ニシンであるということです。 –
まず、バイナリを 'pprof'の引数として提供する必要があります。あなたのプログラムはどのくらいの期間実行されますか?意味のあるプロフィールを作成するのに十分なサンプルがないかもしれません。 – JimB
@ JimB addは関数に(現在は10秒以上のランタイムで)スリープし、toolコマンドのバイナリはまだ出力されません。 –