当前位置:首页>java>代码补全新思路:用 Grep 就能吊打复杂图检索?这篇论文让 RAG 回归本质

代码补全新思路:用 Grep 就能吊打复杂图检索?这篇论文让 RAG 回归本质

  • 2026-02-05 01:04:55
代码补全新思路:用 Grep 就能吊打复杂图检索?这篇论文让 RAG 回归本质

论文链接:https://arxiv.org/pdf/2601.23254

为什么要重新审视"简单粗暴"的检索方式?

在现代软件开发中,代码补全已经成为 IDE 的核心功能。虽然大语言模型(LLM)在单文件或单函数场景下表现出色,但面对大型代码仓库时就显得力不从心了。为什么?因为在实际项目中,关键的类定义、工具接口、全局常量往往分散在不同文件和目录中。受限于有限的上下文窗口,LLM 无法把整个代码库都塞进去,仅靠当前文件的信息又会遗漏掉那些至关重要的跨文件依赖。

为了解决这个问题,学术界提出了各种基于检索增强生成(RAG)的方法。目前主流的方案有三类:传统的相似度检索(用余弦相似度或 BM25 打分)、结构感知检索(通过静态分析构建依赖图)、以及策略优化检索(用强化学习训练检索器)。这些方法虽然有效,但都有一个共同的痛点:太重了

举个例子,在一个包含 10 万行 Python 代码的 huggingface_diffusers 仓库上,GraphCoder 需要花约 91 秒构建图索引,检索还要 7 秒。而开发者期望的延迟是 0.5 秒以内,超过 2 秒就会让人抓狂。更糟糕的是,代码仓库是动态变化的,频繁的修改会让静态图和向量索引很快过时。

这时候研究者们想到了一个有趣的问题:开发者平时不都是用 Grep、Ctrl+F 这些简单工具来查找代码吗? 这些轻量级的词法搜索工具虽然看起来"原始",但实际上非常高效。于是本文提出了一个大胆的假设:在引入复杂检索机制之前,简单的、无需索引的词法检索能走多远?

论文的核心贡献有三点:

  1. 验证了 Naive GrepRAG 的潜力:即使是基础的 grep 检索框架,也能在基准测试上达到与复杂图检索方法相当的性能。

  2. 深入分析了成功原因:通过剖析检索模式,对比 RAG 基线方法的失败案例,为未来的检索增强代码补全研究提供了洞见。

  3. 提出了优化的 GrepRAG 策略:引入标识符加权重排序和结构感知去重,解决了关键词歧义、上下文冗余和碎片化问题,在多个基准测试上达到了 SOTA 性能。

相关工作

代码大模型的发展

近年来,大语言模型不仅在自然语言理解上取得突破,也深刻改变了代码生成领域。目前市场上主要有两类模型:闭源商业模型(如 GPT 系列、Gemini、Claude Opus 4.5)和开源模型(如 DeepSeek-V3、Qwen 3,以及专门针对编程优化的 Code Llama、StarCoder)。这些模型在处理文件内逻辑时表现优异,但在跨文件场景下仍然存在明显短板。

仓库级代码补全的三大流派

由于模型的上下文窗口有限,无法完整加载整个代码库,RAG 技术应运而生。现有方法主要分为三个方向:

1. 相似度检索:早期方法主要依赖语义或词法匹配来定位参考信息。比如 AceCoder 检索相似代码片段,APICoder 检索 API 文档,RepoCoder 通过"生成-检索"循环动态扩展查询语义。但这些方法基于 BM25 或向量相似度,难以捕捉代码的内在逻辑依赖。

2. 结构感知检索:为了显式建模代码关系,GraphCoder、RepoHyper、Cocomic 等工作构建了代码上下文图或依赖图,RepoFuse 还加入了噪声过滤机制。然而,复杂的图构建和遍历过程带来了高昂的计算延迟。

3. 策略优化与对齐:RLCoder 使用强化学习端到端微调检索器,以生成概率作为优化目标;AlignCoder 通过生成候选补全来增强查询语义,训练专用检索器以适应下游模型的推理需求。

虽然这些方法各有千秋,但都绕不开一个问题:计算成本太高。本文回归本质,重新审视了最简单的词法检索方式。

核心方法

让 LLM 自己生成 Grep 命令

动机实验

研究者首先做了一组对比实验,测量了现有方法在 RepoEval_Updated 数据集上的检索延迟。结果令人震惊:

对于大型仓库(如 50 万行以上的代码),VanillaRAG 或 GraphCoder 的单次检索时间可以超过 40 秒!而使用 ripgrep 进行词法匹配,在 diffusers 仓库上只需约 0.4 秒,在 FloatingPoint Java 仓库上也仅需 1.45 秒——大约是原方法的 1/35

不仅快,效果也不差。研究者通过案例研究发现,在一个方法调用场景中,GraphCoder 把不相关的日志代码排到了第一位,真正的类定义被降到第 9 位还被截断了。而 Grep 通过精确的标识符匹配,直接定位到了类定义和使用示例。

Naive GrepRAG:让 LLM 当"检索指挥官"

基于这些观察,研究者设计了 Naive GrepRAG 框架,包含三个阶段:

1. Grep 查询生成:给定当前光标位置前的本地上下文,LLM 自主生成  条 ripgrep 命令(通过提示词设为 10 条)。LLM 会分析代码的词法特征、潜在依赖和用户意图来生成查询。

2. 确定性执行:这些查询在整个代码库中执行,通过精确字符串匹配返回候选代码片段。

3. 上下文构建:参考 GraphCoder 的做法,用 Jaccard 相似度对候选片段排序,选择 Top-K 个拼接成最终的提示上下文。

检索模式分析

研究者分析了 45,615 条 ripgrep 命令(95% 置信水平,5% 误差边界),发现检索行为可以分为基础模式高级策略两个层次。

基础检索模式(按关键词类型分类):

  • 类名检索(35.96%):主要用于暴露对象的类型和成员结构。在方法调用补全(obj.)时,LLM 用类名检索定义以获取属性和方法;在类声明补全(class C extends P)时,检索父类定义作为结构参考。

  • 方法名检索(41.47%):定位方法的定义和使用。在参数补全(obj.method(...))时,检索方法签名和调用示例;在方法体补全(def method(...):)时,检索同名或模糊匹配的方法作为实现参考。

  • 变量名检索(18.37%):检索变量定义和赋值以了解类型和初始值。全局变量(如 CONFIG_PATH)被追溯到定义处获取配置信息,频繁出现的局部变量则提供使用参考。

  • 其他(4.20%):使用字符串或非标准标识符定位相似代码片段。

高级检索策略:

  • 通配符模糊匹配:23.5% 的命令使用通配符模式(如 class.*ConfigModel 匹配 DataConfigModel)。这允许模型检索语义相关的定义作为原型,即使目标上下文中的确切标识符未知。

  • 多查询检索:Naive GrepRAG 的关键特征是生成查询集而非单个命令。例如在参数补全时,类名查询检索接收者的类定义,方法名查询定位目标方法和调用点,变量名查询找到其他使用。通过聚合这些结果,形成多个部分重叠的词法视图,显著提高检索鲁棒性。

为什么 Baseline 会失败?

研究者分析了 249 个测试案例(Naive GrepRAG 成功但其他基线失败)。基线方法通常采用两阶段工作流:初始词法检索(BM25/Jaccard)+ 重排序机制。失败被分为两类:

类型 I:粗检索失败(占 64.6%-76.1%):基线在初始阶段就没能检索到关键上下文。这主要是因为 BM25 和 Jaccard 强调整体 token 重叠而非与补全点紧密相关的标识符。而 Naive GrepRAG 检索补全点的显式标识符,能精确召回局部和结构相关的代码。

类型 II:重排序失败(占 23.9%-35.4%):基线检索到了核心代码块,但重排序没能把它们排到前面。GraphCoder 强调结构相似性(如相似的循环模式),可能与实际补全目标无关;RLCoder 使用微调检索器编码语义相似性,但往往无法高度排序精确的方法或变量名。

总结来说,Naive GrepRAG 成功是因为它检索到了与补全点更紧密相关的代码片段,使用了更精确的查询关键词

Naive GrepRAG 的局限性

虽然表现不错,但 Naive GrepRAG 也有明显短板。研究者分析了 643 个失败样本,发现:

1. 关键词歧义和重排序失败(占 71.5%-75.1%):当查询涉及高频通用标识符(如 initconfigrun)时,ripgrep 会检索到大量包含相同关键词但缺乏语义相关性的文档。Jaccard 相似度无法有效区分频繁停用词和任务特定标识符,导致噪声块获得人为高分,挤掉了真正相关的上下文。

2. 上下文碎片化和冗余(重要问题):即使正确上下文进入 Top-K,其结构组织也存在问题。如图所示,两个独立的 grep 查询(针对 "load_config" 和 "process_data")分别匹配了同一文件的相邻区域。独立检索机制导致信息冗余(重叠代码区域被重复保留)和语义不连续(使用位置的片段排名高于定义位置,导致"使用在定义之前"的逻辑混乱)。

3. 隐式依赖(基本限制):当当前上下文缺乏显式结构关系(如继承)时,Naive GrepRAG 难以使用 ripgrep 命令定位关键上下文。这是词法检索的根本局限。

优化方案:GrepRAG 的后处理流水线

基于上述分析,研究者提出了 GrepRAG,在 Naive GrepRAG 的基础上增加了两个级联的后处理步骤:

阶段 1:标识符加权重排序

为了解决关键词歧义问题,需要一种能有效惩罚频繁通用标识符、奖励低频任务特定标识符的算法。BM25 引入的 IDF 因子正好满足这一需求。对于每个 Grep 检索到的代码块 ,将其视为文档,把待补全代码作为查询来计算相关性分数:

这一步输出按相关性降序排列的候选列表 。需要注意的是,这与 RQ2 的发现并不矛盾——BM25 适合在补全感知候选集中分配差异化权重,但可能不适合作为粗粒度全局检索器

阶段 2:结构感知去重与融合

为了缓解 token 浪费和语义不连续,研究者设计了基于行号区间的融合策略。该机制解析每个代码块的物理行号范围,精确识别物理重叠或相邻的代码片段,然后执行拼接操作,将碎片化片段合并成完整、连续的语义块,从而重建代码的逻辑流程并消除冗余。

为了平衡计算开销与性能,只处理  中排名前 N%(实验中设为 50%)的候选块。最后从去重列表中选择 Top-K 块作为 LLM 的输入,同时严格限制总上下文长度为 4096 个 token。

实验效果:全面碾压现有方法

主要结果:一致的性能提升

研究者在 CrossCodeEval 和 RepoEval_Updated 两个数据集上进行了全面评估。结果显示,GrepRAG 在所有评估维度上都取得了显著提升,并且在不同的骨干模型上保持高度一致性。

在 CrossCodeEval 上:

  • Python 任务(DeepSeek-V3.2-EXP):代码 EM 从 38.61%(Naive 版本)提升到 42.29%,标识符 F1 从 72.33 提升到 75.15。
  • Java 任务:代码 EM 达到 43.15%,显著超过 RLCoder(39.46%)和 RepoFuse(38.62%)。
  • 跨模型一致性:在 Qwen3-Coder-Plus 上同样取得大幅提升,Python 代码 EM 达到 44.62%。
  • 相比最佳基线,**代码 EM 相对提升 7.04%-15.58%,标识符 EM 提升 5.02%-11.50%**。

在 RepoEval_Updated 上(大型仓库):GrepRAG 展现出卓越的噪声鲁棒性。特别是在 API 级任务中,性能改进尤为明显:

  • Python 子集:代码 EM 提升 13.8%(35.75 → 40.70)
  • Java 子集:代码 EM 提升 13.4%(40.27 → 45.67)

消融实验:揭开性能提升的秘密

为了量化每个组件的贡献,研究者进行了消融研究:

GrepRAG w/o Dedup(仅改用 BM25 重排序):性能提升相对较小,Python DeepSeek-V3.2-EXP 上 EM 仅从 38.61% 升至 39.12%(+0.51%)。这表明在上下文窗口被大量重复代码片段占据时,仅优化排序算法难以突破瓶颈。

GrepRAG w/o BM25(仅加入去重模块):取得了显著的性能提升,EM 达到 41.93%,比 Naive GrepRAG 提升了 3.32%。这个增益远大于仅替换排序算法的效果,说明结构感知去重贡献更大

GrepRAG (Full)(完整配置):达到最优性能(42.29%),表明一旦去重机制确保了信息广度,BM25 的精确排序进一步优化了信息精度。两者展现出良好的正交互补性。

超参数敏感性分析

研究者还研究了后处理阶段的关键超参数 (去重前从 BM25 排序列表中选择的候选片段百分比)。实验结果呈现出高度一致的倒 U 型模式:

  •  时:性能明显下降。由于大型仓库中存在严重冗余,BM25 列表头部往往被来自不同位置的语义相同块主导。去重后,有效 Top 列表可能只剩 1-2 个块,导致 LLM 上下文窗口利用不足。

  •  时:模型在 Python 和 Java 的所有指标上一致达到峰值性能。这表明  在候选覆盖率和信息密度之间提供了稳健的平衡。因此 GrepRAG 采用  作为默认设置。

  •  时:性能趋于平稳或略有下降,因为 BM25 排序尾部的低相关性块对 Top-K 选择贡献很小,还可能引入额外噪声。

知识蒸馏:更快更强

虽然 ripgrep 的物理检索成本很小(毫秒级),但用通用 LLM 生成检索命令仍会产生额外的推理延迟。研究者从两个角度进行了优化:

  1. 输出约束:观察到 grep 命令具有高度模板化特征(固定参数和格式)。因此在微调 Qwen3-0.6B 时,模型只需预测核心检索关键词,其余命令结构直接从静态模板实例化。这大幅减少了生成 token 数量,降低了推理延迟。

  2. 知识蒸馏:使用代码生成能力强的 claude-opus-4-5-20251101 作为教师模型构建高质量训练数据。

结果显示,在 RepoEval_Updated 数据集的行级任务上,微调的 0.6B 模型在补全质量上超过了更大的通用模型,实现了性能和计算成本的双重优化

RAG 流水线时间(包括索引和检索的端到端成本)对比:

  • GrepRAG (0.6B Distilled):1.69-2.05 秒
  • GraphCoder / RepoFuse:超过 60 秒

更重要的是,ripgrep 命令生成的时间复杂度是  常数级别(只依赖当前编辑窗口的本地上下文,与仓库大小无关),而基于图的方法通常会随着仓库规模增长产生  或更高的时间开销。

论文总结:回归本质,化繁为简

这篇论文通过一个看似"反直觉"的思路,证明了简单的词法检索在代码补全任务中被低估了。通过让 LLM 自主生成 ripgrep 命令,结合标识符加权重排序和结构感知去重,GrepRAG 不仅达到了 SOTA 性能,还把检索延迟降低到了原方法的 1/35。核心洞见在于:代码补全的关键不在于构建复杂的语义图或向量索引,而在于精准捕获与补全点紧密相关的显式标识符依赖——这恰恰是 Grep 这类简单工具的强项。未来的工作将探索自适应路由机制,以更好地支持隐式依赖场景。

扩展思考

不知道在使用VIbe Coding工具的时候有没有看到,他们确实在用gep来快速搜索包含关键词的上下文信息,比如函数名、查询变量或者在terminal里面捕获一些日志等,我有时候在想之前咱们传统做RAG是预先切块,然后通过embedding构建索引等,查询的时候再去做相似度计算或者排序,这个论文是不是可以启发我们可以在用的时候先进行grep或者将grep作为召回一个额外通路,然后在用llm去判断相关性等。 下面是关于GrepRAG应用于文档检索的一些想法:

GrepRAG 的核心思想——让 LLM 生成精确关键词进行快速字面匹配——理论上可以迁移到文档检索,但直接应用会遇到本质障碍。代码的优势在于标识符具有唯一性和精确性(如 Deck.draw() 在代码库中只有一个定义),而自然语言文档中同一概念可能有多种表述方式("机器学习"可能被写成"AI"、"深度学习"等),单纯的字面匹配会漏掉大量语义相关内容。此外,代码有明确的语法结构和显式依赖关系,而文档的语义依赖是隐式的,GrepRAG 的结构感知去重在文档场景下效果会大打折扣。

不过,在特定场景下改造后的 GrepRAG 仍有应用价值。对于技术文档、API 手册等术语明确的结构化文档,词法检索可以作为多路召回中的一路,与语义向量检索、BM25 检索配合使用:让 LLM 在生成查询时同时输出关键词和同义词扩展,用 Grep 快速召回精确匹配的内容,再用语义检索补充覆盖,最后联合重排序(BM25 + 语义相似度)。这种混合架构既能保留 GrepRAG 的速度优势(无需索引构建),又能弥补其在语义理解上的不足。但对于非结构化文档或开放式问答场景,传统的密集检索方法仍然是更优选择。

添加微信,备注”LLM“进入大模型技术交流群

如果你觉得这篇文章对你有帮助,别忘了点个赞、送个喜欢

>/ 作者:ChallengeHub小编

  >/ 作者:欢迎转载,标注来源即可

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 17:08:10 HTTP/2.0 GET : https://f.mffb.com.cn/a/471770.html
  2. 运行时间 : 0.138807s [ 吞吐率:7.20req/s ] 内存消耗:4,597.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e0a70474f7834e17a20dfbe7232f5070
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000955s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001447s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000714s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000640s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001295s ]
  6. SELECT * FROM `set` [ RunTime:0.000585s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001463s ]
  8. SELECT * FROM `article` WHERE `id` = 471770 LIMIT 1 [ RunTime:0.000946s ]
  9. UPDATE `article` SET `lasttime` = 1770455290 WHERE `id` = 471770 [ RunTime:0.014741s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.004189s ]
  11. SELECT * FROM `article` WHERE `id` < 471770 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001324s ]
  12. SELECT * FROM `article` WHERE `id` > 471770 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001093s ]
  13. SELECT * FROM `article` WHERE `id` < 471770 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002090s ]
  14. SELECT * FROM `article` WHERE `id` < 471770 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001831s ]
  15. SELECT * FROM `article` WHERE `id` < 471770 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.020627s ]
0.142642s