前回 は実装が悪くて完全に Litho が負けていましたが、ある程度動かせるものができたので、potatotips で発表してきました。
結論から言えば、これでもやはり AsyncLayoutInflater のほうが速いです。「Litho は既存の XML によるレイアウトを完全に置き換えるものではない」との言葉通り、適用箇所をきちんと見極めないと意味がないよね、ということを身にしみて感じました。
前回の計測で抱えた問題
Litho は RecyclerView を念頭に置いているため、今のところ単なる ScrollView に相当するコンポーネントを持っていません。LinearLayout 相当のコンポーネントに子 View を足しても、与えられた領域のなかに子 View がおさまるよう計算するだけで、これが前回の計測で問題となった点でした。子 View が多くなると、子同士がオーバーラップし始め、その分無駄に計算しまくるためです(ログにもそのようなメッセージが表示されます)。
どう改善したか
ScrollView を親にその下で Column を設定しました。これで画面内にびっしり Text が敷き詰められるようなことがなくなり、計算がシンプルになって高速化しました。
ただしまだ問題はある
スクロールすると、初回描画領域外にあった Text が見えません😂。