Linus Torvalds [off-list ref] writes:
And the "fully packed" part is probably the most important part. A packed
Linux historic tree takes just under six seconds cold-cache and under two
seconds hot-cache, but that's because pack-files are _really_ good at
mapping all the commits in just one go, and at the beginning of the
pack-file.
But try the same thing with a fully unpacked kernel, and you'll see the
real pain of having to traverse all of history. We're talking minutes,
even when hot in the cache.
Just a random thought... Does that suggest the general purpose
filesystem you would use for "a fully unpacked" case have room
for improvements? Would a special purpose filesystem that is
designed to host .git/objects/??/ directory help?