注目★★★★★Lobsters
時刻変換を2回の乗算以下へ、依存を断つ高速化
30秒で把握
- 1時刻変換の依存関係を分解し、1日の範囲で低レイテンシ化
- 260・3600の除算を固定小数点乗算へ置換し高速化
- 3V1は可読性、V2はスループット、V3は低レイテンシを選択
要約
この記事は、1日の秒数値を時・分・秒へ変換する処理を、計算の依存関係を断つことで大幅に短縮する手法を論じた。一般的な実装は時・分・秒を順に除算し、約16 CPUサイクルを要する。入力を0〜86399秒に限定すれば、60と3600による除算を固定小数点乗算へ置き換えられる。さらに合計分と時を並列に求め、V1は可読性、V2は高スループット、V3は低レイテンシを重視する構成に分けた。V3は2回の乗算未満のレイテンシを狙える一方、総演算数が増えてスループットでは不利になる。性能はCPUやSIMD実装に依存し、符号付き整数より符号なし整数が有利だと結論づけた。
あなたへの影響
低レベル最適化を行う日本のエンジニアは、対象CPU・SIMD幅・レイテンシかスループットかを定め、V1〜V3を実ベンチマークで比較すべきです。
推奨:固定小数点乗算は入力範囲の保証が前提になるため、境界値テストも実施してください。