跳到正文

日志与可定位性设计:级别、刷盘与真实成本

实测:落盘字节 = ⌊已写字节 ÷ 缓冲区大小⌋ × 缓冲区大小——写满 3001 行(113728 字节)后崩溃,4KB 缓冲留 2918 行(110592=27×4096),1MB 缓冲留 0 行;级别短路放在格式化之前是 0.2ns/行,放在之后是 181.2ns/行(900 倍);同一行落在 1MB 缓冲/默认 4KB/每行 fflush 上分别是 260/769/8195 ns;行缓冲 64 字节时 snprintf 静默截断而返回值照报 91;全局锁+共享 FILE 比每线程独立文件贵 8.5 倍;文本日志 zlib 后只剩 4.9%–9.5%。