FGALDC 15
/RE:18211 RE:カーソルを進めるより検索が速い
こんにちは、耳而夢斎 さん
》 普通は,大きなファイルだからこそ一括置換のスピードが生きてくると思う
》んですけどね。巨大ファイルなら,カーソルを進めて編集するよりも百回の置
》換の方が速いと思います。実験はしてませんが。
私もそう思っていたんですけどね。でも、結果は MES14/#7102 に示したとおり。
もっとも、一番時間がかかっているのは改行文字の空白化のようだから、それに
比べれば速いと思いますが。う〜ん、正規表現を使っているのが悪いのかなぁ。
実は、私が改竄した htm2txt でも、改行文字の空白化を飛躍的に早くできれば、
全体の速度の向上にはもっと寄与できると思います。でも、この方面が手詰まり
になったので、1から作り直したのです。
この「としき改竄版」では、改行文字は機械的に空白文字に変換していました。
例外条件は、空白文字に変換して行を結合したらラインバッファをあふれてしま
うときには結合しない、というものだけ。
当然、例外は少なければ少ないほどいい。では、例外を少なくするにはどうすれ
ばいいか。行を結合したときにラインバッファからあふれなければよい。そのた
めには、結合前の個々の行が短ければ短いほどよい。ということで、HTMLの
整形に関係ないタグは行結合前に一括置換で削除することにしました。このとき、
全てのタグを削除したいわけではないので、タグの種類毎に何回も繰り返し一括
置換をかけるという格好になります。まぁ、定義済みの全てのタグを一括置換し
ても手間ばかりかかってメリットが少ないので、ある程度出現頻度が高いか、あ
るいは長さの長くなることの多いタグに絞って削除しています。
そして、行結合の後に、整形に関係あるタグを使って整形します。その後に残っ
たタグは、一括置換による削除対象外のタグ、及び、タグ内に改行が入ってしま
っていたために行結合前はタグの体をなしていなかったものです。そこで、最後
にこれらを一括置換で削除して完了となります。
ここで、「改行文字は機械的に空白文字に変換」というのをやめて、改行に関す
るタグのところでは改行させてしまえばラインバッファの超過は起こらないので
はないか、ということを考えました。でも、改行が起きるタグと言っても結構あ
るんですよね。
しかり、
しかり、