dev.to | 📄 原文链接 | 2026-10-23 收录

git last-modified 快不快,取决于那 40 个文件在哪

来源:dev.to — 2026-10-22

📋 概述

作者在同一个仓库、同一批 40 个文件上跑了两次同样的命令,唯一变量是换了哪 40 个文件:第一次 861 毫秒,第二次 6.4 秒——直接输给了它本来要取代的做法。背景是 Git 2.52 引入、至今仍标着 EXPERIMENTAL 的 git last-modified:它一次遍历历史,为给定的每个路径报告最后一次改动它的提交,用来取代「每个文件跑一次 git log -1」这种每个仓库浏览器的文件列表都在用的浪费做法。测试对象是 git/git 本身(82542 个提交、4857 个受版本控制的文件、4 核虚拟机),用 blob:none 克隆并自行编译 2.56.0。文件都在同一个目录时它 861 毫秒、逐文件循环 2981 毫秒,快 3.5 倍,且逐条核对过提交哈希;但当同样的 40 个文件散落在整棵树里、历史基本不重叠时,胜负反过来。他还发现 pathspec 父目录在前、子路径在后会静默丢一行。

🔑 核心要点

💡 金句

The first run took 861 milliseconds. The second took 6.4 seconds, and lost to the thing it's supposed to replace.
译:第一次跑用 861 毫秒,第二次 6.4 秒,输给了它本该取代的那个东西。
← 返回 dev.to 首页