git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Index files autocompletion too slow in big repositories (w / suggestion for improvement)

From
Carlos Pita <carlosjosepita@gmail.com>
Date
Apr 14, 2017, 22:08 UTC
Message-ID
<CAELgYhfwwLZXGN9yHZ04koDwGn3=KbuJOxhLM-+PCbumTmMunw@mail.gmail.com>
In-Reply-To
<CAELgYhf1s43p62t6W14S=nDt-O247cPqsPMUDfye1OTnDND3Gg@mail.gmail.com>
This is much faster (below 0.1s):
__git_index_files ()
{
    local dir="$(__gitdir)" root="${2-.}" file;
    if [ -d "$dir" ]; then
        __git_ls_files_helper "$root" "$1" | \
            sed -r 's@/.*@@' | uniq | sort | uniq
    fi
}
time __git_index_files

real 0m0.075s user 0m0.083s sys 0m0.010s

Most of the improvement is due to the simpler, non-grouping, regex. Since I expect most of the common prefixes to arrive consecutively, running uniq before sort also improves things a bit. I'm not removing leading double quotes anymore (this isn't being done by the current version, anyway) but this doesn't seem to hurt.

Despite the dependence on sed this is ten times faster than the original, maybe an option to enable fast index completion or something like that might be desirable.

Best regards -- Carlos

Previous: Carlos PitaNext: Ævar Arnfjörð Bjarmason
Message 2 of 10 in “Index files autocompletion too slow in big repositories (w / suggestion for improvement)”
  1. Carlos PitaApr 14, 2017
  2. Carlos PitaApr 14, 2017
  3. Ævar Arnfjörð BjarmasonApr 14, 2017
  4. Jacob KellerApr 15, 2017
  5. Junio C HamanoApr 15, 2017
  6. Johannes SixtApr 15, 2017
  7. Jacob KellerApr 16, 2017
  8. Junio C HamanoApr 17, 2017
  9. Johannes SixtApr 17, 2017
  10. Johannes SixtApr 15, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.