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

Re: [[PATCH v2] 4/4] rebase: avoid computing unnecessary patch IDs

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 2, 2016, 17:06 UTC
Message-ID
<xmqqoa5bf6d0.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<8ec80c21-5ab1-d806-d8d6-e7180be00670@gmail.com>
Jakub Narębski <jnareb@gmail.com> writes:
> The problem is that one expects hashmap_cmp_fn() to return ==0 on equality,
> while one would expect for hashmap_eq_fn() to return true (==1) on equality.
> So we would have to rewrite all calling sites.

Yes, and I do not think it is a "problem". There only are about a dozen callsites of hashmap_init().

> It would be nice to have a comment about how hashmap uses cmpfn in
> hashmap.h.  

That is the absolute minimum but I think that is already done in the Documentation/technical/api-hashmap.txt.

> Though... currently our hashmap implementation uses linked
> list (separate chaining) for handling hash collisions (for collision
> resolution). More sophisticated data structures, such as balanced search
> trees,...

But that requires total ordering of the elements registered in a hashmap. So far, because cmp_fn that was misnamed was only about equality, you can safely use a hashmap to store things that do not have inherent order among them. Besides, if your hashmap has to optimize the hash collision resolution part with complex strucure, your hash function is bad or your hash bucket growing strategy is suboptimal, or both, which is the first thing you should look at, not the "now how would we find it in the bucket with too many things?"

Previous: Jakub NarębskiNext: Johannes Schindelin
Message 18 of 25 in “0/4] Use header data patch ids for rebase to avoid loading file content”
  1. 0/4] Use header data patch ids for rebase to avoid loading file contentKevin Willford, Jul 29, 2016
  2. 1/4] patch-ids: stop using a hand-rolled hashmap implementationKevin Willford, Jul 29, 2016
  3. Junio C HamanoJul 29, 2016
  4. Johannes SchindelinAug 1, 2016
  5. Junio C HamanoAug 1, 2016
  6. Eric WongAug 1, 2016
  7. Johannes SchindelinAug 2, 2016
  8. Junio C HamanoAug 2, 2016
  9. Junio C HamanoAug 2, 2016
  10. Junio C HamanoJul 29, 2016
  11. 2/4] patch-ids: replace the seen indicator with a commit pointerKevin Willford, Jul 29, 2016
  12. Junio C HamanoJul 29, 2016
  13. 4/4] rebase: avoid computing unnecessary patch IDsKevin Willford, Jul 29, 2016
  14. Junio C HamanoJul 29, 2016
  15. Johannes SchindelinAug 1, 2016
  16. Junio C HamanoAug 1, 2016
  17. Jakub NarębskiAug 2, 2016
  18. Junio C HamanoAug 2, 2016
  19. Johannes SchindelinAug 2, 2016
  20. Junio C HamanoAug 2, 2016
  21. Junio C HamanoAug 4, 2016
  22. Johannes SchindelinAug 4, 2016
  23. 3/4] patch-ids: add flag to create the diff patch id using header only dataKevin Willford, Jul 29, 2016
  24. Junio C HamanoJul 29, 2016
  25. Johannes SchindelinAug 1, 2016

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.