概要
前回の続きとして、実際のAndroid環境で.NET MAUIとFlutterの画像処理速度を比較してみます。
.NET MAUI Preview 10を試すのが中心ではなくなっていますが、そこは気にしない方向で…
画像処理内容と比較条件(環境)
基本的に前回と同じです。
画像ファイルの保存は圧縮率やファイルサイズが異なることが前回分かり、統一するのが面倒なのと、実際のReflowable Readerで画像を保存することはないので省略しました。
今回も当然ながら両方ともReleaseビルドとするべきですが、.NET MAUIのReleaseビルドだとストレージの権限が取得できなかったので、.NET MAUIのみDebugビルドです。
2019年発売のSnapdragon 855を搭載したAndroid端末で測定しました。
結果
結果はこのようになりました。
右側に前回のWindows上での結果も記載します。
Android | Android | Windows(前回) | Windows (前回) | ||
.NET MAUI | Flutter | .NET MAUI | Flutter | ||
1.画像ファイルの読み込み | 128 ms | 1268 ms | 126 ms | 827ms | |
2.新画像イメージ(白紙)の生成 | 0 ms | 17 ms | 0 ms | 16ms | |
3.合成 | 106 ms | 179 ms | 44ms | 66ms |
Flutterの動作速度は、Windows上でも.NET MAUIより遅かったのですが、Android上では更に差が広がることになりました。
「1.画像ファイルの読み込み」については、.NET MAUIならWindows上でもAndroid上でも同じ速度ですが、FlutterではAndroidにするとWindowsよりも1.5倍の時間がかかっています。
その結果、Android上では.NET MAUIと比較して10倍もの速度がかかっています。
「2.新画像イメージ(白紙)の生成」についてもFlutterの方が遅いですが、他と比べれば短い時間ですね。
「3.合成」はCPU性能に比例するのでしょうか、.NET MAUIもFlutterもWindows→Androidで2.5倍くらいの時間がかかっています。
つまり.NET MAUIとFlutterで比較して、Flutterの方が1.5倍くらい遅いのはどちらの環境でも変わりません。
まとめ?
使用するパッケージやライブラリ、さらに処理方法によって速度は変わると思うので、一概に言語の差とは言えないでしょうが、今回の結果は.NET MAUI(C#/SkiaSharp)の方が、Flutter(Dart/image Package)よりも速く、OSによる速度差も小さかったです。
もともとXamarin.Formsとして完成していたこともありますが、.NET MAUIは動作速度も十分速いので、期待できるのではないのでしょうか。
Android向けアプリReflowable Readerのこれから
速度計測の結果、Flutterでの画像の読み込みは非常に遅いということが分かりました。
一方、image PackageのcopyIntoは思っていたほど遅くなかったようです。
今回の処理内容とReflowable Readerの処理内容が同じというわけではないので、Reflowable Readerでは何らかの理由で合成処理に時間がかかっている可能性も考えられますが、画像ファイルの読み込みが非常に遅いことは確実なので、何らかの対策をとっていきたいと思います。
flutter_native_imageというパッケージが使えそうな、使えなさそうな…
素人が高速化を考えずに書いたプログラムでは.NET MAUIの方がFlutterよりも5~10倍速くなりそうなので、.NET MAUIが正式版になれば、.NET MAUIで作り直すのもありかなと考えています。
コメント
[…] Reflowable Readerというアプリを公開していますが、最近更新していません。その理由は、Flutterで画像の読み込みが遅く、解決方法が分からないため、.NET MAUIでの作り直しを考えているためです。そろそろ.NET MAUIの正式版が発表されそうなので、作り直しに備えて機械学習というものを試してみました。 […]
[…] ついにFlutter 3が公開されました。Flutter 3の大きな特徴はmacOSとLinuxへの対応のようです。それ以外にもパフォーマンスの向上など、多くの改良が行われているようです。そこで個人的に気になるのが、image.dartのdecodeImageが速くなっているかどうかです。(.NET MAUI Preview 10を試してみる その3 Android実機で画像処理速度をFlutterと比較…参照)早速、FlutterのUpgrade前後で速度を比較してみました。 […]