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に短縮しました。チームがインパクトを確認できるよう、具体的な指標を含む改善を記録するコミットメッセージが必要です。

試してみる — Git Commit Message Generator

フルツールを開く