perf: パフォーマンス改善
パフォーマンス改善のためのperfコミットタイプの使い方を学びます。perfとrefactorの使い分け、ベンチマークの記録方法、ベストプラクティスを解説します。
Type Examples
詳細な説明
perf コミットタイプ
perfタイプは、パフォーマンスを改善するコード変更を示します。動作を変えずにコードを再構築するrefactorとは異なり、perfは測定可能なパフォーマンス特性が改善されたことを明確に示します。Semantic Versioningでは、perfコミットは通常、単独ではバージョンバンプをトリガーしません(動作は同じ)が、一部のチームではpatchバンプをトリガーするよう設定しています。
メッセージの例
perf: cache database queries for user profiles
perf(renderer): reduce DOM updates with virtual scrolling
perfを使うタイミング
以下の場合にperfを使用します:
- 実行時間やレイテンシを短縮する
- メモリ使用量やアロケーションを削減する
- バンドルサイズやネットワークペイロードを縮小する
- レンダリングやフレームレートを改善する
- データベースクエリやI/O操作を最適化する
パフォーマンス向上の記録
ボディにベンチマークや指標を含めます:
perf(api): add response caching with Redis
Add a Redis cache layer for GET endpoints that
serve mostly static data. Cache TTL is 5 minutes.
Before: avg 120ms response time, 50 req/s
After: avg 8ms response time (cache hit), 500 req/s
Cache miss still goes to the database with the
same ~120ms response time. Cache invalidation
happens on POST/PUT/DELETE to the same resource.
perfとrefactorの比較
perfを使う場合... |
refactorを使う場合... |
|---|---|
| アルゴリズムを最適化した | 明確さのためにコードを書き直した |
| キャッシュを追加した | ヘルパー関数を抽出した |
| バンドルサイズを縮小した | 変数をリネームした |
| ビフォー/アフターの指標がある | 動作もパフォーマンスも同じ |
よく使われるパフォーマンス動詞
cache → キャッシュレイヤーの追加
optimize → アルゴリズム効率の改善
reduce → リソース使用量の削減
lazy-load → 必要になるまでロードを遅延
batch → 複数の操作を結合
memoize → 関数結果のキャッシュ
ユースケース
遅いページ読み込みの原因となっていたデータベースクエリを最適化しました。インデックスの追加とクエリの再構築により、平均レスポンスタイムを800msから50msに短縮しました。チームがインパクトを確認できるよう、具体的な指標を含む改善を記録するコミットメッセージが必要です。