あがき

↑では、余計な事を書かずにバッファのデータ構造だけに絞れば良かったと後悔しつつ、高速化を試みるテスト。
頻繁に呼ばれる、位置(Integer)から行(双方向リンクリストの要素)を探す関数にキャッシュみたいなものをかますと、巨大ファイルの編集に関しては、特に後半の編集に、微妙に改善が見られました。前の方の編集は、後の全ての行に対してリンクリストを辿って位置情報とかインクリメントしていかないといけないのがネックなのでしょう。つーかバッファのデータ構造全く関係無さそうだなあ。
しかし体感的には、やはり色分け処理のほうが重く感じます。編集そのものが重く感じるのは3MBぐらいからなんですけど、色分けはWindows.pasでもうだめ。

これを解決するには、次のような選択肢があると思われます。

  1. 凝った色分け処理をやめる
  2. 凝った色分け処理をやめる
  3. 凝った色分け処理をやめる

色分け用の限定正規表現はNFAでマッチさせてますけど、DFAにしたって効果なんか見込めませんよねえ、ええ、うん、そうにちがいない。
(昔アルゴリズムの本を見てDFAのところで頭が痛くなったらしい)

そして、私はまた余計な事を書いてしまったと後悔するに違いない──