我用 Grok 4.3 把一个 O(n²) 的算法优化到 O(n),差点被自己的老代码气哭

上周在给公司的数据中台做性能优化,发现一个处理日志匹配的功能慢得离谱。每天几百万条日志进来,光这一个匹配环节就要跑好几个小时。

打开代码一看,是上一位同事写的,用的是最简单的暴力双重循环,时间复杂度 O(n²)。当时数据量小,用着还行,现在数据量翻了十倍,直接顶不住了。

我本来准备自己写优化,突然想到之前在 大模型(01gpt.cn) 上用过 Grok 4.3,它的算法推理能力评测里和 GPT-5.5 打成平手。干脆让它试试,顺便看看它的优化思路是什么水平。

第一版:暴力解法

我把原代码丢给 Grok 4.3,让它先分析问题。

原逻辑很简单:两个列表,一个是日志规则,一个是实际日志。每条日志要去匹配所有规则,找出最匹配的那条。规则有优先级,日志有类型,匹配上了还要算相似度。

Grok 4.3 看了几眼就给出了分析:“这代码的问题是重复计算太多。每条日志都在重复遍历所有规则,而且相似度计算是纯CPU密集操作。优化方向有两个:减少规则遍历次数,或者优化相似度计算。”

这个分析和我想的一模一样。

第二版:索引优化

它给出的第一个优化方案是给规则加索引。不是简单的哈希索引,而是按日志类型做了多层索引——先按日志类型快速过滤掉不相关的规则,再按优先级排序,优先匹配高优先级的规则。

改完之后一跑,匹配时间从好几个小时降到了十几分钟。效果显著,但还不够。

第三版:缓存相似度

它自己看了运行结果,说“还可以再优化”。这次它盯上了相似度计算。

日志里有很多相同的单词和短语,每次都要重新算一遍相似度,浪费了大量时间。它给出的方案是把已经算过的相似度缓存起来,下次遇到相同的直接拿结果。而且它会分析哪些单词是高频词,优先缓存这些。

改完之后,匹配时间从十几分钟降到了几分钟。

第四版:时空权衡

我以为到此为止了,结果它又说“还可以进一步优化”。这次它盯上了内存——缓存太多会导致内存占用过高,甚至触发GC停顿。

它给出的最终方案是做“分批处理加时间窗口缓存”。不是把所有计算结果都缓存,而是只缓存最近一段时间的数据,过期的自动清理。同时根据系统的实时内存使用情况动态调整缓存大小。

这个方案把时间控制在了几分钟以内,内存占用也稳住了。从最初的几个小时到现在的几分钟,整个优化过程 Grok 4.3 一步步推导,每一步都有理有据。

几点感受

最让我触动的是它的“不满足”——我自己可能优化一轮就完事了,它会反复分析,说自己“还能更好”。这种持续迭代的风格,让它能从一个最基础的优化方案一直进化到高度工程化的复杂方案。

它不只是给代码,还会解释为什么这样改。每一步优化都有明确的理论支撑——为什么索引能减少遍历、为什么缓存能减少计算、为什么分批能控制内存。这种解释让你真正理解优化思路,而不是只会照搬答案。

还有一点是它会权衡。不是一味追求速度,而是综合考虑时间、空间、工程维护成本。比如缓存方案里主动加了过期清理和内存监控,这些细节让它给出的方案更接近真实生产环境的需求。

以前自己做优化,想出一种方案就开始写,写到一半发现不行又推倒重来。现在有 Grok 4.3 帮忙,它会先把所有可能的优化方向列出来,分析每种方向的收益和代价,然后从最优解开始逐步迭代。这省下的不只是时间,还有反复试错的挫败感。

算法优化这件事,以前靠经验——经验丰富的工程师能想到更多优化方向。现在有 Grok 4.3 帮忙,它相当于一个见过大量优化案例的搭档,能帮你穷举你可能想不到的方向。经验不够的人也能做出高水平的优化,这才是 AI 在算法领域最实在的价值。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容