Profiling
プロファイリングは、プログラム実行時のリソース使用状況(CPU/メモリ/IO)をサンプリングし、ホットな関数とボトルネックを特定して最適化の指針を得る手法である。
目的
データに基づいて性能ボトルネックを特定し、当てずっぽうの最適化を避ける。
メカニズム
CPUプロファイルはコールスタックをサンプリングして時間のかかる関数を見つけ、ヒーププロファイルはメモリ確保のホットスポットを示す。フレームグラフ(炎のグラフ)がスタック時間を可視化する。ツールとしてはNode --prof、Python cProfile、Java JFRなどがある。本番環境ではサンプリングでオーバーヘッドを最小化する。
ユースケース
- パフォーマンスの最適化
- ボトルネックの特定
- フレームグラフの活用