
はてなキーワード:EmEditorとは
https://github.com/oonyanya/FooList/tree/main
巨大ファイルを一瞬で開いて、編集できるデモプログラムを書いてみた。
VisualStudio2022ならビルドできるはずなんで試してみてくれ。
手元のPCで試したところ、770MBのログファイルを一瞬で開くことができた。
最後まで読み込むのにかかった時間はSSD、Core i5 10400F、メモリー16GBの構成で5秒程度。
バカまじめによむとくそ遅いし、メモリーを食うので、遅延読み込みとメモリーマッピングの技術を使ってる。
本来なら、System.IO.PipelinesやSystem.IO.MemoryMappedFilesを使ったほうがいいんだが、めんどくさいので、FileStreamでごかましてる。
そこは突っ込まないでくれ。
そして、こいつを使えば、誰でもEmEditorや鈴川エディタもどきが簡単に作れる。
やる気があれば、AvalonEditに組み込むこともできるかも。
鈴川エディタや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
AllocatedGC Memory:101,257,168bytes
AllocatedGC Memory:101,247,232bytes
AllocatedGC Memory:333,371,424bytes
AllocatedGC Memory:333,257,000bytes
AllocatedGC Memory:331,904,816bytes
clear buffer
AllocatedGC Memory:66,304bytes
AllocatedGC Memory:86,939,136bytes
AllocatedGC Memory:87,272,912bytes
clear buffer
AllocatedGC Memory:69,448bytes
16GBぐらいメモリーを積んでれば1.1GBまでは読み込めることを確認した。
ただ、ずるをしていて、行の構築はぎりぎりまでしないようになっている。
一応、最終行への行ジャンプと編集と削除、置き換えだけはできるし、保存と内容の表示もできるが、最終行まで表示すると3GB近くメモリーを食う。
読み込んだだけでも2.5GB近くはメモリーを食う。
読み込んでから操作できるようになるまでかかる時間: 35秒程度
保存: 13秒程度
全置換え: 25秒程度
全置換えからのアンドゥ: 25~40秒程度だったと思う
しかも、速いとか。
とはいえ、ここまでできたのBigList、もといRopeのおかげだ。
Ropeの存在を知らなかったら、.NETで巨大ファイルの編集は夢のまた夢だった。
とはいえ、BigListに制約(Int.MAX-1=2^31-1までの要素しか扱えない)があるし、LOH入りを回避するため、ブロックサイズを64KBに抑えてるので、せいぜい2GBぐらいまでしか扱えないが…
(BigListは計算上、4GBまでなら読み込みだけならできるけど、最大行数がInt.MAX-1=2^31-1までしか保持できないので、実質的には無理やと思う。それにそこまでの動作は確認してない。NTFSで一般には手に入らないマシンを用意してまで動作確認したマイクロソフトすごすぎ)
鈴川エディタもリンクドリストでそれぞれのファイルをつなげると遅いので、おそらくRopeの考え方を使っているものと思われるが、あの意味不明なリバランスのやり方を論文から読んでそのまま実装するのはすごいとしか言いようがない。
ファイルの中身をメモリーにおいていいなら、そこまで難しくはないな。
スクロールやキャレットの画面外の移動の時だけ、レイアウト行を構築すればそれでおしまい。
http://s170199.ppp.asahi-net.or.jp/vivi/docs/buffer/edit_buffer.php
ViViエディターの人の記事が書いているような複雑怪奇なバッファー管理はいらない。
メモリーを32GBぐらい積んでいれば、ギャップバッファーでも1GB未満の大きさのファイルの読み書きは簡単にできる。
自作のエディタでも900MBを12秒ぐらいで読み込むことができた。
ただ、この機能を実装すると行ジャンプのダイアログを出したときに最大行数がわからなくなる。
まともに使いたいなら、ちょっと考え方を変えないと駄目だ。
1GBを超えると何かしらの制限に引っ掛かる。
EmEditorや鈴川エディタ、巨大ファイル対応ログビュアーなど巨大ファイルを扱えるエディターはマジすごい。
最低賃金のウェブプログラマー兼雑用で、大学受験に落ちた俺にはこれが限界…。
自作のエディターでつかってるgap_vectorもどこかから拾ってきたやつで、スクラッチで書いたわけではない。
こんなことなら、きちんと数学IIICを勉強して情報系の大学に行けるようにするべきだった。
大学に入るためには教科書の基礎問題だけでなく、応用問題みたいな知識の使い方を問う問題まで解けるように努力すべきだったorz
EMEditorはすごいらしいよ
実際すごい 一瞬で処理が終わる
https://forest.watch.impress.co.jp/docs/special/1291024.html
https://anond.hatelabo.jp/20170706235735
勝手に具体的に考えてみる。
マウスで目的の部分をさっと選択できて、さっと切り貼りできる。EmacsやViは1ストローク余計にかかって使いづらい。他のエディタなら大抵OK。
WriteMonkyなど
秀丸とEmEditorの競い合い、VimとEmacsの宗教戦争、初心者にTeraPadを勧める記事、今は落ち着いている印象。
ニコニコ生放送で福島みずほの放送にコメントを書き込んでもまったく反映されない。
「あ」とか「わこつ」とか何を打っても反映されない。
新規アカウントと古いアカウント両方試してみたがコメントが反映されない。
今後は、若者の票が欲しくて動画配信に乗り出す議員も増えるので、上っ面に騙されないように気をつけて欲しい。
2000年頃はガラケーのメル友募集サイトが流行っており、サクラも少なかった。
今時の出会い系サイトといえばTwitterやfacebookやニコ生などの動画配信サイトだ。
2ちゃんねるのせいだろう。
ここの匿名掲示板でコテハンを付けるような奴らは珍獣扱いだった。
PHSをご存知だろうか。
白黒の画面、着メロも1音、カメラも付いてない機種を使ってた。
これはこれで味があるんだよ。また発売されたら使ってみたいね。
でもみんなスマートフォンに縛られすぎじゃないだろうか。
便利になった反面、悪いことをする奴も出てくる。
電車内で乗客を盗撮してTwitterに画像をアップロードして笑いものにしてる奴とかね。
仲間と共有したいという気持ちが強くてやってしまったんだろう。
悪いという自覚があるのかどうか知らないが、根は悪くないと思いたい。
マナーが悪い輩が現れるのはADSL全盛期から予測してたことだ。
これで職歴ができるのでまじでおすすめ。
設立するまでに20万以上かかるので10万以内に抑えられる合同会社でもいいよね。
働きたい人はぼくにアピールしてください。
好きなエディタを使ってもいいです。EmEditorや秀丸がいいって人は会社の経費で買います。
好きなOSを使ってもいいです。会社の経費で20万までなら好きなパソコン買ってもいいです。
求める人材。
会社が儲かってきたらやりたいこと
勤務地:埼玉の大宮。東京は地震が起きた時にいろいろと不便なので社員を守るために東京ではなく埼玉。自社サービスなのでぶっちゃけどこでもいい。