recompute-persona.cli.ts
4.9 KB
-
perf(persona): recompute CLI 加 --concurrency(默认1)—— I/O-bound,并发 ~4.5x · b5de1a0c
实测推翻旧注记"persona 重算 CPU-bound、异步并发不提速":每患者 recompute 含 ~15 次 串行 DB 往返(2 次全量 fact 读 + 多次 findFirst),实为 **I/O-bound**。单进程分块 Promise.all 并发可重叠这些 DB 等待 —— 本地 500 患者 17s(串行)→ 4s(并发16),~4.5x, concurrency 8-16 后 plateau(DB 成瓶颈)。正确性验证:500/500 各 1 active persona、 0 重复版本、0 空特征(不同患者独立写 + 同患者不并发,无竞争)。 - --concurrency=N:分块并发(默认 1 向后兼容) - --shard=i/k:多进程分片(按患者序号取模,吃多核;DB 先饱和时用) - 大批(>500)只打进度行不逐条刷屏;orderBy id 稳定序供分片 全量重算 131689 患者:7h(串行)→ ~1.6h(并发12)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
luoqi committed