0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【メモ】cProfile でプロファイリング

Posted at
  • 製造業出身のデータサイエンティストがお送りする記事
  • cProfile でどこの処理で時間がかかっているかを調べられることを知ったので、メモとして残しておきます。

はじめに

cProfile は、プログラムのどこで実行にどれだけ時間がかかったのかを提示してくれます。
普段、あまり使うことは無いのですが、処理を早くしたい時などに使える機能だなと思いました。

使い方

基本的な使い方は、-m cProfile を付けて.pyファイルを実行すると使えます。

sample.py
def main(N):
    for i in range(N):
        pass
    a()
    b()

def a():
    pass

def b():
    for i in range(N):
        pass

if __name__ == '__main__':
    N = 10**6
    main(N)

実行結果は下記です。

~/Desktop ❯ python -m cProfile sample.py
         7 function calls in 0.074 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.074    0.074 sample.py:1(<module>)
        1    0.022    0.022    0.074    0.074 sample.py:1(main)
        1    0.020    0.020    0.029    0.029 sample.py:13(b)
        1    0.000    0.000    0.000    0.000 sample.py:9(a)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        2    0.032    0.016    0.032    0.016 {range}

簡単に各項目の説明を下記に記載します。

項目 概要
ncalls 呼び出し回数
tottime 関数で消費した合計時間
percall tottime をncalls で割った値
cumtime 関数全てのsubfunction に消費された累積時間
percall cumtime をプリミティブな呼び出し回数で割った値
filename:lineno(function) ファイル名、行番号、関数名

##さいごに
最後まで読んで頂き、ありがとうございました。
本日は短いですが、cProfile でプロファイリングできることを知りましたのでメモとして残しておきました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?