先日、縦書き文庫の組版エンジン(nehan)をRustで書き直し、WebAssembly化したと報告しました。
その際に「約3倍の速度向上があった」と書いたのですが、あれから約2週間分の利用者のログをもとに、プラットフォーム別に速度を比較したところ、ちょっと違う結果が出ました。
比較したプラットフォーム
とても大雑把ですが、PC(Windows)とPC(Mac)とiPhone、Androidに分けて計測しました。
プラットフォーム別の速度
以下は速度比較のグラフです。縦軸は秒速の組版字数で、大きいほど速いことになります。
赤がnehan7(js)の速度で、青がnehan8(wasm)の速度です。
プラットフォーム別の速度向上率は、こんな感じでした。
結果について
メモリが潤沢と思われるPCにおいては、WindowsもMacも組版速度が秒速30万字を超えているので、大抵の作品で1秒以内に組版が完了し、ストレスなく作品が表示されるものと思われます。
iPhoneも秒速16万字ぐらいの速度が出ているようなので、長い作品では2〜3秒は待たされてしまうかもしれませんが、概ねストレスなく表示されそうです。
最後にAndroidですが、これは古い機種(Android 10とか)のスマホが平均値を押し下げているみたいで、秒速7万字ぐらいになってしまいました(統計を取るときに、Android 12以降、みたいな縛りをつけたら良かったかもしれません)。
ちなみに秒速7万字ぐらいだと、40万字超えの作品(例えば夏目漱石の「こころ」とか)は5〜6秒ぐらい待たされることになり、そこそこストレスだと思います。
しかしそれでもjsよりは約8倍速いので、WebAssmbly化の効果は大きかったと言えるでしょう。
その他のプラットフォームでも、だいたい6〜9倍の速度向上があり、概ね満足な結果と言えます。
これでwasmからjsに非同期にデータを送信する方法があったら、もっと快適な読者体験を提供できるのですが…