こんにちは。Apple Silicon Mac mini 入手してそのスピードに喜んでいる大野です。私が開発に加わっていた京都大学様のサイトが無事に公開できて一息つきました。フロントエンドのスピード感にもこだわって作っているので是非見てみてください。ちなみに Google Speed Insight のスコアは低いです(笑)
さて、今回は PHP 8.0 がついにリリースされ、それに Drupal もバージョン 9.1 で対応したので、どのくらい早くなるのか気になるので検証してみたいと思います。また、今回は Drupal Advent Calendar 2020 の記事として投稿します。
半年ほど前にDrupalの開発環境を仮想環境からリモートサーバーへ移行したら爆速になった話と言う記事を書いたんですが、この環境を今も使い続けているので、これに PHP 8.0 と Drupal 9.1 を入れて検証します。Ubuntu 20.04 であればPHP 8.0 は Ondrej さんのプライベートリポジトリから普通に入れることができます。サポートに感謝!
TL;DR
- Drupal 9.1 になってインストール速度が早くなった
- PHP 8.0 JIT + Drupal 9.1 は20%位早くなった
Drupal 9.1 ではインストール時のパフォーマンスが20%向上した
Drupal 9.1.0 のリリースノートには、「インストール時のパフォーマンスが20%向上した」と書かれているので、まずはその比較をしてみましょう。
次の動画は以前に PHP 7.3 + Drupal 8.8 の環境で、「プロフィールの選択ボタンを押してからサイトの詳細情報の入力画面が表示されるまで」を計測したものです。計測の結果としては約24秒でした。
では次に同じハードウェアスペックの環境で PHP 7.3 + Drupal 9.1 の組み合わせを計測してみましょう。
14秒!私の環境だと約70%向上しました。素晴らしい改善ですね。
JITとは?
PHP 8.0 の目玉機能として JIT (Just In Time) が実装されました。ググっていただけば詳しい記事がたくさん出てくるのでここでは割愛しますが、簡単に言うと「プログラムの実行時にコンパイルを行ってネイティブコードを生成する」機能のことです。これまでPHPのようなスクリプト言語は、C言語のようなコンパイルして実行する言語には速度面では絶対に敵わなかったのですが、このJITが搭載されたことによりコンパイル型言語に匹敵するスピードが出るようになりました。つまりメッチャ早くなったと言うことです。ただし、Drupal や WordPress のようなWebアプリケーションは、他のものがボトルネックになることが多く、そこまでのスピードの向上は見込めないとのこと。また 9.1 のリリースノートにも but the JIT compiler and performance improvements are not likely to affect Drupal.
と書かれているので、過剰な期待はせずに計測します。
まずは JIT が無効な状態の PHP 8.0 + Drupal 9.1 で計測して、PHP 7.4 からどの位速度が向上したか見てみましょう。
13秒。正確な計測をしてないので誤差の範疇かもしれませんが PHP 7.4 からも着実に早くなっているようです。
最後に JIT を有効にした状態の PHP 8.0 + Druapl 9.1 で計測してみましょう。
11秒!20%程早くなりました。確かに効果はあるようです。プラシーボ効果かもしれませんが、管理画面を操作してみても以前より軽快に動作するような感じがします。
まとめ
いかがでしたでしょうか?PHP 8.0 JIT の環境ではさらなるスピードアップが期待できそうです。Drupal 9.1 のコアは PHP 8.0 に対応しましたが、コントリビュートモジュールは対応できてない可能性があります。今の段階では本番の環境で PHP 8.0 を選択するのはリスキーなので、なかなか手が出しづらいと思いますが、あと1年もしたら普通に使うことができるようになっているでしょう。早くPHP 8.0 がスタンダードな時代になることを願います。
ちなみに環境によっては Drupal のインストール時に英語以外の言語を選択すると、リダイレクトループする不具合があるようですのでご注意を。私は Drupal.org に上がっていたパッチをあてて対応しました。
募集しています
スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。