on master: Impossible to list history/ for more than a few hundreds commits because ls getdents() syscalls are done with a quite small buffer (19 entries on my machine), hence the readdir is regularly called with a different offset and the directories entries are re-computed every time. on feature/add-direntry-lru-cache: - medium repo (13k commits) 1s (no cache) 0.2s (cached) - very large repo (900k commits) 6min24s (no cache) 4min34s (cached)