anti scroll

ブラウザと小説の新しい関係を模索する

WebAssembly導入の効果をプラットフォーム別に比較してみた

先日、縦書き文庫組版エンジン(nehan)をRustで書き直し、WebAssembly化したと報告しました。

tategakibunko.hatenablog.com

その際に「約3倍の速度向上があった」と書いたのですが、あれから約2週間分の利用者のログをもとに、プラットフォーム別に速度を比較したところ、ちょっと違う結果が出ました。

比較したプラットフォーム

とても大雑把ですが、PC(Windows)とPC(Mac)とiPhoneAndroidに分けて計測しました。

プラットフォーム別の速度

以下は速度比較のグラフです。縦軸は秒速の組版字数で、大きいほど速いことになります。

赤がnehan7(js)の速度で、青がnehan8(wasm)の速度です。

nehan7(js) vs nehan8(wasm)

プラットフォーム別の速度向上率は、こんな感じでした。

結果について

メモリが潤沢と思われるPCにおいては、WindowsMac組版速度が秒速30万字を超えているので、大抵の作品で1秒以内に組版が完了し、ストレスなく作品が表示されるものと思われます。

iPhoneも秒速16万字ぐらいの速度が出ているようなので、長い作品では2〜3秒は待たされてしまうかもしれませんが、概ねストレスなく表示されそうです。

最後にAndroidですが、これは古い機種(Android 10とか)のスマホが平均値を押し下げているみたいで、秒速7万字ぐらいになってしまいました(統計を取るときに、Android 12以降、みたいな縛りをつけたら良かったかもしれません)。

ちなみに秒速7万字ぐらいだと、40万字超えの作品(例えば夏目漱石の「こころ」とか)は5〜6秒ぐらい待たされることになり、そこそこストレスだと思います。

しかしそれでもjsよりは約8倍速いので、WebAssmbly化の効果は大きかったと言えるでしょう。

その他のプラットフォームでも、だいたい6〜9倍の速度向上があり、概ね満足な結果と言えます。

これでwasmからjsに非同期にデータを送信する方法があったら、もっと快適な読者体験を提供できるのですが…