Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< anond:20250602170040 |■ >

2025-06-02

鈴川エディタEmEditorで少ないメモリー使用量で巨大テキストファイル編集できるとうたってるが、.NETでも見事に再現できたぞ。

1.2億行×100文字の全置換えでGCメモリー使用量は340MB程度で、行の操作86MB程度、合わせて426MBだ。

その辺の.NETテキストエディタコンポーネントに組み込んでも500MBぐらいで済むと思う。

(その代わりワークファイルは30GBぐらいは行ってるはず)

鍵はropeというデータ構造使用することとropeアクセスする際、ディスクに保存する機構を付け加えるだけだ。

特にソースコードで見るべき個所はBigList.cs、Node.cs、DiskPinableContentDataStore.csの所だけだ。

多少遅くて構わないなら、ディスクに保存することはそこまで難しくはない。

メモリーマップファイルは何かと面倒なので使ってないが、.NETでMMDataStructuresとかメモリーマップファイルを扱うやつがあるんで、メモリーマップファイルでも行けるはずだ。

benchmark start

size:120000000

AllocatedGC Memory:66,304bytes

addtime:173334ms

AllocatedGC Memory:101,257,168bytes

replace 1time:816628ms

AllocatedGC Memory:101,247,232bytes

replace 2time:1179279ms

AllocatedGC Memory:333,371,424bytes

replace 3time:1886714ms

AllocatedGC Memory:333,257,000bytes

enumratotiontime:1638579ms

AllocatedGC Memory:331,904,816bytes

clear buffer

AllocatedGC Memory:66,304bytes

addlinetime:46649ms

AllocatedGC Memory:86,939,136bytes

updatelinetime:77635ms

AllocatedGC Memory:87,272,912bytes

clear buffer

AllocatedGC Memory:69,448bytes

Finished.HitAnyKey

https://github.com/oonyanya/FooList

Permalink |記事への反応(0) | 21:24

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -

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

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp