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

Re: [PATCH 4/8] git-remote-mediawiki: get rid of O(N^2) loop

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Jul 16, 2012, 19:31 UTC
Message-ID
<vpqhat7v6xe.fsf@bauges.imag.fr>
In-Reply-To
<7v394r36ws.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 11 quoted lines
> Matthieu Moy <Matthieu.Moy@imag.fr> writes:
>
>> The algorithm to find a path from the local revision to the remote one
>> was calling "git rev-list" and parsing its output N times. Run rev-list
>> only once, and fill a hashtable with the result to optimize the body of
>> the loop.
>
> Good thinking.  I wonder if it would further reduce the overhead if
> you stop using --children and do this using --parents instead, as
> you will be reading the parsed_sha1..local range either way yourself
> anyway.

It is possible, yes. I'll resend a version with --parents, but this probably doesn't change the performance much: what we really need is for Git to prune dead-ends in the subgraph, to make sure we find a path without having to backtrack (i.e. we need parent rewriting history simplification), so Git has to do something a bit clever anyway.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Previous: Junio C HamanoNext: Matthieu Moy
Message 13 of 33 in “git-remote-mediawiki: fixes, optimizations, and progress report”
  1. 0/8 git-remote-mediawiki: fixes, optimizations, and progress reportMatthieu Moy, Jul 16, 2012
  2. 1/8 git-remote-mediawiki: don't split namespaces with spacesMatthieu Moy, Jul 16, 2012
  3. Junio C HamanoJul 16, 2012
  4. 2/8 git-remote-mediawiki: actually send empty comment when they're emptyMatthieu Moy, Jul 16, 2012
  5. Junio C HamanoJul 16, 2012
  6. Matthieu MoyJul 16, 2012
  7. Junio C HamanoJul 16, 2012
  8. 3/8 git-remote-mediawiki: make mediafiles export optionalMatthieu Moy, Jul 16, 2012
  9. Junio C HamanoJul 16, 2012
  10. Matthieu MoyJul 16, 2012
  11. 4/8 git-remote-mediawiki: get rid of O(N^2) loopMatthieu Moy, Jul 16, 2012
  12. Junio C HamanoJul 16, 2012
  13. Matthieu MoyJul 16, 2012
  14. 5/8 git-remote-mediawiki: use --force when adding notesMatthieu Moy, Jul 16, 2012
  15. 6/8 git-remote-mediawiki: show progress information when listing pagesMatthieu Moy, Jul 16, 2012
  16. 7/8 git-remote-mediawiki: show progress information when getting last remote revisionMatthieu Moy, Jul 16, 2012
  17. 8/8 git-remote-mediawiki: properly deal with invalid remote revisionsMatthieu Moy, Jul 16, 2012
  18. Junio C HamanoJul 16, 2012
  19. 0/8 git-remote-mediawiki: fixes, optimizations, and progress reportMatthieu Moy, Jul 16, 2012
  20. 1/8 git-remote-mediawiki: don't split namespaces with spacesMatthieu Moy, Jul 16, 2012
  21. 2/8 git-remote-mediawiki: actually send empty comment when they're emptyMatthieu Moy, Jul 16, 2012
  22. 3/8 git-remote-mediawiki: make mediafiles export optionalMatthieu Moy, Jul 16, 2012
  23. 4/8 git-remote-mediawiki: get rid of O(N^2) loopMatthieu Moy, Jul 16, 2012
  24. 5/8 git-remote-mediawiki: use --force when adding notesMatthieu Moy, Jul 16, 2012
  25. 6/8 git-remote-mediawiki: show progress information when listing pagesMatthieu Moy, Jul 16, 2012
  26. 7/8 git-remote-mediawiki: show progress information when getting last remote revisionMatthieu Moy, Jul 16, 2012
  27. 8/8 git-remote-mediawiki: properly deal with invalid remote revisionsMatthieu Moy, Jul 16, 2012
  28. Junio C HamanoJul 16, 2012
  29. 0/2 git-remote-mediawiki: two more fixesMatthieu Moy, Jul 17, 2012
  30. 1/2 git-remote-mediawiki: fix incorrect test usage in testMatthieu Moy, Jul 17, 2012
  31. 2/2 git-remote-mediawiki: allow page names with a ':'Matthieu Moy, Jul 17, 2012
  32. Dan JohnsonJul 20, 2012
  33. Matthieu MoyJul 23, 2012

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.