Files
TransPyC/lib/Projectrans
TermiNexus 1748940d30 perf(Phase2Translator): 文本读全走 LRU 缓存 + 写侧显式失效,削重复文件 I/O
- 新增 _ReadTextCached:键 =(路径, st_mtime_ns, st_size),命中即免 open/read/close;
  按总字节预算(64MB)LRU 淘汰,单文件 >32MB 不入缓存;newline 非 None 时退化为直读。
- 21 处文本读点全部改走缓存(.vpi/.pyi 解析、.ll/.stub.ll/.text.ll、deps.json、
  doc.json、include 源、pyi 缓存预热等),json.load(f) 统一改 json.loads(_ReadTextCached(...))。
- 新增 _InvalidateTextCache:14 处本进程文本写点(原地改写/新落盘)后显式失效。
  Windows 文件时间为系统时钟派生,粒度约 15.6ms,"先读 → 同 tick 内原地改写 → 再读"
  且改写前后字节数相同时 (mtime, size) 键完全一致(实测两例:_compile_one 前的 type
  定义重排——行集合不变仅次序变;_recombine_ll 的旧 sha1 前缀替换——16 位 hex 等长替换),
  只靠 stat 判新旧会读到过期文本,故写侧必须显式失效。

基线 PROF/20260930_224857:_io.open 12,740 次/self 28.8s、read 11,902 次/30.4s、
TextIOWrapper.__exit__ 16.6s(128 个模块却上万次读,同一份产物被多阶段反复打开)。
2026-09-30 23:13:01 +08:00
..