keisukeのブログ

***乱雑です!自分用のメモです!*** 統計や機械学習の勉強と、読み物を書く練習と、備忘録用のブログ

cProfileの表示順

https://docs.python.org/2/library/profile.html#module-cProfile
http://stackoverflow.com/questions/10326936/sort-cprofile-output-by-percall-when-profiling-a-python-script


PythonでcProfileを使うとどの関数がどれだけ時間喰ってるかを調べられる:

python -m cProfile myprog.py

デフォルトだと,表示順は'standard name'つまりファイル名と関数名を辞書順に並べて情報を表示する.
cProfileを使う時は,かかった時間順に並べたいのが普通の要求だと思うので,
そういう時は

python -m cProfile -s cumtime myprog.py

とすると良い.

ちなみに,-sオプションに与えられるのは以下の通り:

オプション名 英説明 和説明
'calls' call count 呼び出し数
'cumulative' cumulative time その関数がトータルで使った時間,内部で呼んだ関数の時間も含む
'cumtime' cumulative time 同上
'file' file name ファイルネーム(すなわちモジュール名)順
'filename' file name 同上
'module' file name 同上
'ncalls' call count 呼び出した回数順
'pcalls' primitive call count 呼び出した回数順,ただし再帰的に呼ばれたものを除く
'line' line number 行順
'name' function name 関数名順
'nfl' name/file/line
'stdname' standard name 標準:ファイル名,関数名順
'time' internal time その関数が使った時間,内部で呼んだ関数の時間を除く
'tottime' internal time 同上