优化前,iLogtail 单线程下单行日志采集速度为 425MB/s,而多行日志采集速度仅为 98MB/s,性能下降近 80%,差距非常显著。这是因为多行采集需要对每一行进行行首正则匹配来判断是否为新日志的开始,旧算法使用 boost::regex_match 全量匹配整行,导致了严重的性能退化。优化后采用 boost::regex_search 配合 boost::match_continuous 仅匹配行首,多行采集速度提升到 350MB/s,达到单行采集 425MB/s 的 82.35%。这意味着优化将多行与单行的性能差距从约 77% 缩小到约 18%,多行采集的额外开销已经降到了可接受的范围内。在 8 线程配置下多行采集可达 370MB/s,进一步缩小了差距。
加载中...