自動追従で追記分だけを解析するようにした

解析を SessionParser に切り出し、前回読んだ位置から先だけを読み足せる
ようにした。書きかけの行は消費せず次回に持ち越す。先頭と解析済み末尾の
バイト列で「追記の続きか」を判定し、違えば頭から読み直す。

Store はファイルごとに Entry (パーサ + ロック) を持つ。追記解析は状態を
持つので、同じファイルを複数スレッドで同時に解析しないようにしている。

実測 (追記1行あたり): 1.4MB 13.1ms -> 7.8ms、14MB 59.0ms -> 8.2ms。
残りはファイル open の実費で、ログサイズによらず一定になった。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 09:46:34 +09:00
co-authored by Claude Opus 5
parent 4692043106
commit efc7180317
2 changed files with 242 additions and 153 deletions
+1
View File
@@ -107,6 +107,7 @@ python chktime.py
- `[Request interrupted...]`(Esc 中断)が含まれるターンには ⚠ を付けます。
- セッション再開時に書かれるメタ行(attachment / system / mode 等)は、ターンの所要時間には数えません。
- 解析結果はファイルの更新時刻+サイズでキャッシュします。変わったファイルだけ再解析するので、自動追従がオンなら手動操作は不要です。
- 追記されただけのファイルは**増えたぶんだけ**読み足します(書きかけの行は次回に持ち越し)。先頭と解析済み末尾のバイト列が変わっていた場合=ログが書き換えられた場合は頭から読み直します。
## ファイル