2025-03-07

https://github.com/rirufa/FooEditengine/tree/lazy_load

https://github.com/rirufa/Fooeditor.WinUI

16GBぐらいメモリーを積んでれば1.1GBまでは読み込めることを確認した。

ただ、ずるをしていて、行の構築はぎりぎりまでしないようになっている。

一応、最終行への行ジャンプ編集と削除、置き換えだけはできるし、保存と内容の表示もできるが、最終行まで表示すると3GB近くメモリーを食う。

読み込んだだけでも2.5GB近くはメモリーを食う。

読み込んでから操作できるようになるまでかかる時間: 35秒程度

保存: 13秒程度

全置換え: 25秒程度

全置換えからのアンドゥ: 25~40秒程度だったと思う

EmEditorや鈴川エディタすごすぎるだろ。

それでそこまでメモリーを食わないとかやばい

しかも、速いとか。

とはいえ、ここまでできたのBigList、もといRopeのおかげだ。

Rope存在を知らなかったら、.NETで巨大ファイル編集は夢のまた夢だった。

とはいえ、BigListに制約(Int.MAX-1=2^31-1までの要素しか扱えない)があるし、LOH入りを回避するため、ブロックサイズを64KBに抑えてるので、せいぜい2GBぐらいまでしか扱えないが…

(BigListは計算上、4GBまでなら読み込みだけならできるけど、最大行数がInt.MAX-1=2^31-1までしか保持できないので、実質的には無理やと思う。それにそこまでの動作確認してない。NTFS一般には手に入らないマシンを用意してまで動作確認したマイクロソフトすごすぎ)

https://szkwjp.sakura.ne.jp/suzukawaeditor_nansho.html

①一つのファイルを数MBに分割する。

②分割ファイルを読み込むと同時に専用フォルダーに保存する。

③同時に分割ファイルから必要データを取得する。

④各分割ファイルを一つのリストとして連結する。

動作を滑らかにするためにプログラム改善する。

⑥この後必要に応じて各種機能を追加する。

鈴川エディタリンクリストでそれぞれのファイルをつなげると遅いので、おそらくRopeの考え方を使っているものと思われるが、あの意味不明リバランスのやり方を論文から読んでそのまま実装するのはすごいとしか言いようがない。

どこかのだれかがBigListを実装してくれなければそもそも巨大ファイルの読み込み機能を追加できなかった。

追記証拠画像

https://d.kuku.lu/p68expc2e

  • バイナリーもだした。 WinUI3で書いてるので、Windows11と10以外は起動すらしないと思う。 ライセンス読めばわかるけど、フリー。 ビルドはVisualStudio2022が必須。 どういうデーター構造と処...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん