LoginSignup
3
3

More than 5 years have passed since last update.

vprof - Python用プロファイラ を使ってみた

Posted at

vprofがtwitterで流れてきたので使い方をメモしていきます。
vprofのREADME.md の方がよく書かれているのでそっちを読んだ方が早いかも。

vprof とは

vprofはプロファイル情報をッチでインタラクティブな可視化を提供するPythonパッケージです。

インストール

pypiに上がっている現在の最新のバージョンは 0.3 です。 (2016/05/21現在)
とりあえずpipでインストールします。

$ pip install vprof

README.md を見ると

## Prerequisites
The required dependencies to build ```vprof``` from source code:
 * Python 2.7, Python 3.4 or Python 3.5
 * ```pip```
 * ```npm``` >= 3.3.12

とあるので node も必要なようです。

ベンチマーク用スクリプト

今回はこのスクリプトをベンチマークするようにしました。

#! /usr/bin/env python
import sys
import time


def calc():
    num = 0
    for ii in range(100):
        ii += 1
        time.sleep(0.01)
    return num


def alloc_large_memory():
    txt = 'a' * 1024 * 1024 * 100  # 100MB
    return txt


def main():
    calc()
    alloc_large_memory()

if __name__ == '__main__':
    sys.exit(main())

実行してみる

$ vsof -cmh "./benchmark.py"

-n オプションで表示対象を指定します。

オプション 表示対象 詳細
c framechart フレームチャート
m memory stats メモリ使用量
h code heatmap 行ごとのヒートマップ

framechart

実行時間やcall回数が可視化されています。

スクリーンショット 2016-05-21 15.32.02.png

正直cprofileで表示する一覧の方が加工しやすいし見やすいかも。。。

memory stats

メモリ使用量が可視化されています。

スクリーンショット 2016-05-21 15.32.11.png

メモリ使用量を計測した時のファイル名と行数がわかるので結構良い。

code heatmap

ヒートマップです。

スクリーンショット 2016-05-21 15.32.28.png

実行回数の多いところが、濃い色で表示されるっぽい。これは良さそう。
importとかしているファイルを表示させる方法がわからなかった...

3
3
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
3
3