私はソーシャルグラフデータを解析するコードを最適化する作業を行っています(多くの助けを借りてhttps://blog.golang.org/profiling-go-programs)、私は多くの遅いコード。runtime.osyieldとruntime.usleepで最も時間を費やすgolangプログラムを最適化する方法
すべてのデータはデシベル最初からメモリにロードされ、そこからデータ解析は、(@ 100%最大メモリ消費< 10メガバイト、CPU1)CPUバインド
表示されます。しかし、今、私のプログラムの時間のほとんどはであると思われますruntime.osyieldとruntime.usleep。それを防ぐ方法は何ですか?
私はGOMAXPROCS = 1を設定しました。コードはgolangライブラリが呼び出すもの以外のゴルーチンを生成しません。
これは_/C_ /コード/ sc_proto/*関数が私のコードですpprof
(pprof) top10
62550ms of 72360ms total (86.44%)
Dropped 208 nodes (cum <= 361.80ms)
Showing top 10 nodes out of 77 (cum >= 1040ms)
flat flat% sum% cum cum%
20760ms 28.69% 28.69% 20850ms 28.81% runtime.osyield
14070ms 19.44% 48.13% 14080ms 19.46% runtime.usleep
11740ms 16.22% 64.36% 23100ms 31.92% _/C_/code/sc_proto/cloudgraph.(*Graph).LeafProb
6170ms 8.53% 72.89% 6170ms 8.53% runtime.memmove
4740ms 6.55% 79.44% 10660ms 14.73% runtime.typedslicecopy
2040ms 2.82% 82.26% 2040ms 2.82% _/C_/code/sc_proto.mAvg
890ms 1.23% 83.49% 1590ms 2.20% runtime.scanobject
770ms 1.06% 84.55% 1420ms 1.96% runtime.mallocgc
760ms 1.05% 85.60% 760ms 1.05% runtime.heapBitsForObject
610ms 0.84% 86.44% 1040ms 1.44% _/C_/code/sc_proto/cloudgraph.(*Node).DeepestChildren
(pprof)
から私のTOP10出力です。
(ここでは、グラフのより良い、SVGのバージョン:https://goo.gl/Tyc6X4)
答え自分自身が見つかり
グラフが判読不能です。あなたはあなたのプログラムが何をしているか教えてくれません。 [最小、完全、および検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve) – peterSO
cgoを使用していますか? – JimB
@JimBはcgoを使用していません。すべて純粋なGo – Aaron