cProfile
code:py
import cProfile
pr = cProfile.Profile() # インスタンス作成
pr.enable() # プロファイリング開始
fib(10) # 計測したい処理を実行
pr.disable() # プロファイリング終了
pr.print_stats() # 結果を出力
結果
code:result
179 function calls (3 primitive calls) in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <stdin>:1(<module>)
177/1 0.000 0.000 0.000 0.000 <stdin>:1(fib)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
code:py
import pstats
stats = pstats.Stats(pr)
stats.sort_stats('ncalls') # ncalls (呼び出し回数) で降順ソート
stats.print_stats()
code:result
178 function calls (2 primitive calls) in 0.000 seconds
Ordered by: call count
ncalls tottime percall cumtime percall filename:lineno(function)
177/1 0.000 0.000 0.000 0.000 <stdin>:1(fib)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
結果をファイルに保存
code:py
pr.dump_stats('fib.profile')
結果の読み込み
code:py
import pstats
stats = pstats.Stats('fib.profile')
stats.print_stats()
既存のpyファイルに対して実行
$ python -m cProfile script.py
-s <property>で降順ソート
ncalls
cumulative
-o <path>でファイルに出力