時間を気にせず普通にカンニングもしつつ PHP で ISUCON14 の問題を解いてみる by sji

PHPerKaigi 2025
レギュラートーク(20分)

時間を気にせず普通にカンニングもしつつ PHP で ISUCON14 の問題を解いてみる

sji_ch sji sji_ch
2

ISUCON は「いい感じにスピードアップコンテスト」の略で、ほぼ同様の処理をするよう作られた Web サービスの参考実装が複数の言語で用意され、参加者は競技中好きな言語を選んでその性能改善をしていきます。2024 年に実施された ISUCON14 でも PHP 用の参考実装が用意され、実際に PHP を使って参加し、良い成績をおさめたチームもありました。

このトークでは ISUCON14 の問題の PHP 参考実装を使い、時間制限を気にせず、参加者の感想ブログの取り組みを平然とパクりつつ、PHP で優勝チームに勝てるスコアを出せるか試した際の知見をお話します。

かつて PHPerKaigi 2023 で ISUCON12 本選問題を使って同様の試みを行った際は、

  • 計測の重要性
  • DB ネックの間は他言語と同じような改善が効く
  • 処理系へボトルネックが移ると同じやり方は使えない
  • AltFPM の有効性
  • CPU をより多く割り当てる必要性
  • 徹底的にやれば PHP でもスコアは出る

といった知見が得られました。
今回もそれらの知見にもとづき同様の改善の道筋をなぞりつつ、FrankenPHP や PHP 製アプリケーションサーバに PHP 8.4 など、前回は存在しなかった・試せなかった取り組みを上乗せで行っていきます。