LoongCollector对iLogtail进行架构通用化升级后,在高输入负载(1GB/s)场景下采集性能下降约15%(从135MB/s降至115MB/s)。性能劣化的原因:
数据结构通用化的开销:原来的LogGroup结构简单直接,升级为通用的PipelineEventGroup后,引入了std::map、std::string等标准容器,大量高频字符串创建和销毁增加了内存分配开销。
shared_ptr引用计数开销:每个PipelineEvent都持有SourceBuffer的shared_ptr,事件的频繁创建/销毁涉及原子引用计数操作。
抽象层增加:插件化和流水线概念引入了更多虚函数调用和间接跳转。
数据拷贝增加:日志解析时文本内容被拷贝到新的string中,而原架构中可能直接在原始buffer上操作。
这是架构通用化的常见副作用——为了可扩展性牺牲了一定的性能。但通过后续优化,最终性能不降反升100%。




