ログの修復については,過去ログに移ったツリーの中に4個所もヌルの混入等が見られたアーティクルがあったので,これをバックアップから書き戻しました。今のところ,その部分は大丈夫らしいことが確認できたので,そろそろ本腰を入れて直そうかと思います。実行時間帯は早朝かな。
> 990 10 15s 2m58s 25s 11s
> 10000 10 17s 3m12s 25s 10s
おお! これは素晴らしい成果ですね。新板はかなり速い。
で,多分……なんですけど,もう少し速くなりそうな気がします。
現行では,処理行番号の存在を確認するのに,必ず後方・前方の二度検索をしていますよね。
> #55 " " &?("%d",o) #m #r c+=r, #c c+=r, ;旧番存在確認
これ,まず実行する後方検索で存在が確認できたら,もう前方検索する必要はないですよね。
なんなら,一旦ファイルの先頭(または末尾)に移動しておいて前方(または後方)検索をすれば,検索は一度で済むかと思います。(1回目でマッチしたら,という条件分岐も面倒)
検索って,1バイトずつ文字列をなめてゆくわけだから,それなりに時間がかかる処理だと思いますが,ジャンプなら〈探す〉わけではないから速そうに思います。特に探している1文字目がそこらじゅうにある空白だし,2文字目も同じキャラクタである可能性がけっこう高いじゃないですか。それこそ「ふんどしの川流れ」的な状況かと。(まぁ,探している番号が存在しない場合は,結局,テキストを全部なめてしまうわけですけどね)
もうひとつは,行番号ジャンプとマークジャンプでどちらが速いのか。
どちらも検索ではないので,「つっかえつっかえ」はない訳ですが,VZ君はどのように行やマークを探しているのか。なかなか興味深いです。