すごくいい問題ですね! 私も試してみましたが、元のプログラムの291行目で 「1%処理する毎に、変数P$に作業中の変数B$を連結して、B$を一旦空にする」 という処理が入っているため、元のプログラムのほうが早いようでした! すばらしい処理だと思います。 改良版にもこの処理を入れれば、早くなると思います。 一般に2つの文字列を連結する場合、新しい場所に2つの文字列を順にコピーする(片方の文字列の後にもう片方をコピーするわけではない)ので、処理時間は連結する両方の文字列を足した長さに比例します。 例えば0文字+1文字を連結する時間を1(10文字+10文字なら20)として、10,000文字のファイルを処理する場合、元のプログラムと改良版で、文字列の連結だけでどのくらい処理時間がかかるのか、計算してみると面白いと思います! (私の計算では、およそ50倍違うようでした)