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回数が可視化されています。
正直cprofileで表示する一覧の方が加工しやすいし見やすいかも。。。
memory stats
メモリ使用量が可視化されています。
メモリ使用量を計測した時のファイル名と行数がわかるので結構良い。
code heatmap
ヒートマップです。
実行回数の多いところが、濃い色で表示されるっぽい。これは良さそう。
importとかしているファイルを表示させる方法がわからなかった...