マジレスするとだな、エディタを作っているなら、
必要のない処理をなるべく減らすことだな。

データは自前で保持して、そのデータに基づいて表示しているとこだけを
描画する。

そのときに、1行ずつ描画するわけだが、引数にスタート位置を与えて、
どこまで描画するか、強調表示するべきかどうかを返すような
関数を作ればかなり高速になると思われ。

まずは、行単位の双方向リンクのバッファを構築することから
はじめれ。

http://vivi.dyndns.org/tech/doc.phtml?FILE_NAME=edit-2.txt