On Mon, Sep 25, 2017 at 05:54:49AM -0400, Derrick Stolee wrote: > Create helper program test-abbrev to compute the minimum length of a > disambiguating short-sha for an input list of object ids. This seems like something that Git ought to be able to do via real commands. Using "log --stdin --no-walk --format=%h" doesn't quite work, since it only handles commits. We ought to be able to ask "cat-file" for this, though. E.g., with the patch below you can do: git cat-file --batch-check='%(objectsize:short)' <input Or even just dispense with your earlier randomization helper and do: git cat-file --batch-all-objects --batch-check='%(objectsize:short)' to compute the abbreviation for every object. > Perf test p0008-abbrev.sh runs test-abbrev for 100,000 object ids. For > test 0008.1, these objects exist. For test 0008.2 these objects do not > exist in the repo (with high probability). For each test, use `sort -R` > to (deterministically) shuffle the sample of object ids to not check > abbreviations in lexicographic order. I know you're not the first to add a test like this, but I'm somewhat negative on these sorts of micro-benchmark perf tests. They're nice for showing off an improvement, but there's little indication of how they impact things that users actually do. We know that this series makes finding abbreviations cheaper. But how much does it speed up "git log --oneline" on a real repository (including absurdly-sized ones)? -Peff