前回、地道に呼出回数を数えていくという方法をとったが、
今回は gprof でお手軽にプロファイルしてみた。
gprof を利用するためには、このようにすれば良い。
% gcc -O -g -pg sample.c
% ./a.out
% gprof a.out
結果を見ると、思ったよりも挿入作業がボトルネックになっていることがわかる。
ただ、ReadSortedGr の実行時間が 0.34 秒というのはおかしい
(ファイルからのデータ読み込みは24秒ほどかかっているはず)ので、
gprof について、もう少し調べてみる必要がありそうだ。
Intel の VTune などの高性能なプロファイラーを用いる方がいいのかもしれない。
今回は gprof でお手軽にプロファイルしてみた。
gprof を利用するためには、このようにすれば良い。
% gcc -O -g -pg sample.c
% ./a.out
% gprof a.out
結果を見ると、思ったよりも挿入作業がボトルネックになっていることがわかる。
ただ、ReadSortedGr の実行時間が 0.34 秒というのはおかしい
(ファイルからのデータ読み込みは24秒ほどかかっているはず)ので、
gprof について、もう少し調べてみる必要がありそうだ。
Intel の VTune などの高性能なプロファイラーを用いる方がいいのかもしれない。
% cumulative self self total time seconds seconds calls s/call s/call name 55.65 21.47 21.47 10 2.15 3.83 DijkstraWithBinTreeP2P 32.81 34.13 12.66 128723320 0.00 0.00 BinTreeInsert 7.93 37.19 3.06 120640933 0.00 0.00 BinTreeGetMinNode 2.79 38.26 1.08 8029936 0.00 0.00 BinTreeDeleteNode 0.88 38.60 0.34 1 0.34 0.34 ReadSortedGr 0.08 38.63 0.03 10 0.00 0.00 BinTreeFree 0.00 38.63 0.00 22 0.00 0.00 GetRusageSec 0.00 38.63 0.00 10 0.00 0.00 BinTreeFree2 0.00 38.63 0.00 10 0.00 0.00 BinTreeInit 0.00 38.63 0.00 1 0.00 0.00 GraphFree 0.00 38.63 0.00 1 0.00 0.00 GraphMalloc 0.00 38.63 0.00 1 0.00 0.00 QueryFree 0.00 38.63 0.00 1 0.00 0.00 QueryMalloc 0.00 38.63 0.00 1 0.00 0.00 ReadDimacsQueryP2P