sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.23k stars 162 forks source link

「画面右で折り返し」でファイルロード時に 2回 CLayoutMgr::_DoLayout が実行される #1036

Open yoshinrt opened 5 years ago

yoshinrt commented 5 years ago

タイトル通りですが,「画面右で折り返し」設定の時,ファイルロード時に 2回 CLayoutMgr::_DoLayout が実行されている気がします. CLayoutMgr::_DoLayout はファイルロード処理の半分くらいを占める重い処理だと思っているので,もし削れるのなら嬉しいのではないかと思います.

1回目はコメントにもあるように,仮に MAXLINEKETAS で桁折りして,その後 OnSize で画面右端桁折りがなされるようなので,1回目はうまくすれば削れるのではないかと思います. https://github.com/sakura-editor/sakura/blob/40147238dc12b2490466de0dfee78006c8e73cba/sakura_core/CLoadAgent.cpp#L247-L257

berryzplus commented 5 years ago

どの部分を問題と捉えるか、捉え方によって対処が異なると思っています。

処理結果をキャッシュする前提で書いてるのは、 DoLayoutが元々はレイアウト計算結果をキャッシュして 変更部分のみを差分更新する仕組みを持っているからです。

beru commented 5 years ago

https://github.com/yoshinrt/SakuraVz/commit/7ecd4612c05ba88bef4997184058f6522930496f?short_path=04c6e90#diff-04c6e90faac2675aa89e2176d2eec7d8

何やら速くなるらしいです。