2025-03-22

anond:20250220134419

RopeもといBigList+GapBufferでさくさくエディターの置き換え処理をやってみた。

使用したマシンCore i7 14700、メモリー32GB、Intel ARC A750。

100万行×100文字を置き換え。

addバッファーの構築で、0.8秒ぐらいで終わる。

replace1は3文字削除の3文字挿入で、3.5秒ぐらいで終わる。

replace2は3文字削除の4文字挿入で、4.9秒ぐらいで終わる

replace3は4文字削除の3文字挿入で、3.6秒ぐらいで終わる。

enumratotionはNULデバイスへの保存で、1.1秒で終わる。

benchmark start

Allocated GC Memory:60,600bytes

add time:729 ms

Allocated GC Memory:199,388,824bytes

replace 1 time:3490 ms

Allocated GC Memory:199,405,136bytes

replace 2 time:4861 ms

Allocated GC Memory:368,390,560bytes

replace 3 time:3577 ms

Allocated GC Memory:368,390,560bytes

enumratotion time:1086 ms

Allocated GC Memory:368,390,736bytes

clear buffer

Allocated GC Memory:84,360bytes

100万行の行とインデックスの変換テーブルの追加と更新処理はこのくらいで終わる。

変換テーブルの処理は構築が0.2秒、行が増えない更新は0.1秒ぐらいで終わる。

add line time:170 ms

Allocated GC Memory:32,805,312bytes

update line time:110 ms

Allocated GC Memory:32,811,000bytes

clear buffer

Allocated GC Memory:84,616bytes

Finished.Hit Any Key

結論

マシン進化はすごい。

.NET8で、さくさくエディタとほぼ互角になるとは。

以下、ソースコード

https://github.com/rirufa/FooList

記事への反応 -
  • テキストエディタを高速化するためにある人が書いたBigListを改造して、リーフノードをリンクドリストでつないだら全列挙が早くなって、スタックオーバーフローしなくなった。 ただ、...

    • RopeもといBigListでさくさくエディターの置き換え処理をやってみた。 使用したマシンはCore i7 14700、メモリー32GB、Intel ARC A750。 100万行×100文字を置き換え。 addはバッファーの構...

    • ちなみに俺はIQ84の境界知能で、発達障害持ちなのだ。 言語性106~120、動作性は60ぐらいなのだ。 言語性の下位項目は正常で、単語が飛びぬけて高いのだ。 動作性の下位項目はほぼ正常で...

      • 素直にすげーな 自力でよくやった おれも自力でAndrew Ng教授のコースとかとったけど微分からやり直す羽目になって大変だったわ 半年くらいやってた

    • BigList<T>の内部で使われているやつをGapBuffer<T>に置き換えてみたら、リーフノードのサイズが32768だと遅くなるけど、最大メモリー使用量はそこまで変わらんな。 ブロックサイ...

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

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