研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

gprof でプロファイル。

2007-11-26 16:24:41 | Weblog
前回、地道に呼出回数を数えていくという方法をとったが、
今回は 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