Profile
Profile.@profile ── マクロ
これ以降のメソッドはエクスポートされないので、Profile.print() などとして呼び出す必要があります。
Profile.clear ── 関数
Profile.print ── 関数
print([io::IO = stdout,] [data::Vector]; kwargs...)
性能測定の結果を io に出力します。io のデフォルト値は stdout です。ベクトル data を渡さないと、内部バッファに積まれたバックトレースが使われます。
キーワード引数には次のキーワードの任意の組み合わせを指定できます:
-
format: バックトレースの出力に木構造を表すインデントを付けるか (:tree) 付けないか (:flat) を指定します。デフォルトは:treeです。 -
C:trueだと、C と Fortran コードからのバックトレースが表示されます。デフォルトはfalseです。 -
combine:true(デフォルト) だと、コードの同じ行に対応する命令ポインタがマージされます。 -
maxdepth::tree形式の出力におけるインデントの深さを制限します。 -
sortedby::flat形式の出力における順序を制御します。:filefuncline(デフォルト) にすると関数が定義されたソースファイルと行番号でソートされ、:countにすると収集されたバックトレースに考えている関数が含まれる回数でソートされ、:overheadにすると収集されたバックトレースの底に考えている関数が含まれる回数でソートされます。 -
noisefloor: 考えている行のサンプル数をn, その行を呼び出した関数のサンプル数をNとしたときに、n <= noisefloor * √Nが成り立つサンプルを出力しません (:tree形式のときにだけ意味を持ちます)。ヒューリスティックで計算されるサンプルノイズの上限を超えるフレームだけを出力するということです。デフォルトは0であり、最初に試す値として2.0が提案されます。 -
mincount:mincount回以上現れた行だけを出力します。 -
recur::tree形式における再帰の扱いを制御します。:off(デフォルト) だと木は通常通りに出力されます。:flatだと再帰が圧縮されて出力され、自分自身を呼び出す部分が一つにまとめられます。:flatcは:flatと同じですが、加えて C フレームを崩して表示します (jl_applyの周りに様々な関数が表示されます)。
print([io::IO = stdout,] data::Vector, lidict::LineInfoDict; kwargs...)
性能計測の結果を io に出力します。このバージョンは retrieve で出力された結果を調べるのに使われます。ベクトル data にバックトレースを、辞書 lidict に行番号の情報を渡してください。
キーワード引数の説明は Profile.print([io], data) を見てください。
Profile.init ── 関数
init(; n::Integer, delay::Real))
バックトレースを取得する間隔を delay 秒に、記録される命令ポインタの個数を最大 n 個に設定します。一つの命令ポインタは一行のコードに対応し、通常バックトレースは命令ポインタの長いリストで構成されます。デフォルトの設定は引数を付けずにこの関数を呼ぶと取得できます。設定するにはキーワード引数として個別に値を渡すか、(n, delay) という順番で位置引数として値を渡してください。
Profile.fetch ── 関数
Profile.retrieve ── 関数
retrieve() -> data, lidict
測定結果をポータブルなフォーマットで "エクスポート" します。全てのバックトレースを含む data と、data に含まれる命令ポインタをファイル名・関数名・行番号を表す LineInfo に対応付ける辞書 lidict を返します。この関数を使うと性能計測の結果を保存して以降の解析で利用できるようになります。
Profile.callers ── 関数
callers(funcname,
[data,
lidict],
[filename=<filename>],
[linerange=<start:stop>]) -> Vector{Tuple{count, lineinfo}}
以前の性能計測結果を受け取り、特定の関数を呼び出した関数を返します。ファイル名 (および関数が定義された行番号の範囲) を指定することでオーバーロードされたメソッドの曖昧性を取り除くことができます。返り値は呼び出し側の呼び出し回数と行番号情報を要素とするベクトルです。省略可能引数 data には retrieve で取得したバックトレースを取得でき、指定しなければ現在の内部バッファが使われます。
Profile.clear_malloc_data ── 関数
clear_malloc_data()
julia を --track-allocation で起動したときに記録されるメモリアロケートのデータをクリアします。テストしたいコマンドを一度実行し (JIT コンパイルを行わせて) から clear_malloc_data を呼び出し、それからコマンドをもう一度実行し、Julia を終了し、生成された *.mem ファイルを調べるという手順を踏んでください。