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

Re: [PATCH 15/17] khash: rename oid helper functions

From
Jeff King <peff@peff.net>
Date
Jun 23, 2019, 22:46 UTC
Message-ID
<20190623224639.GC1100@sigill.intra.peff.net>
In-Reply-To
<0e4ca2e6-5c75-20c3-def5-b2d3e31f9f08@web.de>
On Sun, Jun 23, 2019 at 06:00:50PM +0200, René Scharfe wrote:
Show 15 quoted lines
> > I do think if it took the more usual pass-by-const-pointer we'd probably
> > still end up with the exact same code from an optimizing compiler, since
> > all of the references and dereferences would cancel out once it was
> > inlined.
> 
> I suspect it depends on the compiler and the exact details.  Here's a
> simple experiment: https://godbolt.org/z/kuv4NE.  It has a comparison
> function for call by value and one for call by reference as well as a
> wrapper for each with the opposite interface.
> 
> An enlightened compiler would emit the same code for functions with the
> same interface, but none of the current ones do in all cases.  Clang
> and MSVC do emit the same code for the two call by value functions, so
> there's hope.  And moving to call by reference might make matters worse.
> GCC adds some 128-bit moves to both wrappers for some reason.

Hmm. I'm unsure whether your simplified setup is really showing something interesting or whether we'd need to have true "static inline" functions that are actually _used_ in a hash table to see if there are any significant differences.

But...
> Perhaps it doesn't matter much anyway e.g. due to caching, especially
> for the branch-free variants.  A definite answer would require
> measurements.  Your cleanup would make the necessary surgery on khash.h
> a bit easier by reducing the number of functions and definitions.

Yeah, my gut feeling is it probably doesn't matter much to the overall operation even if the inner code is slightly different (though I'm happy to be overridden by real data). And it's definitely something we can punt on for later (or never if nobody feels like dealing with it).

-Peff
Previous: René ScharfeNext: Jeff King
Message 34 of 37 in “Test oidmap”
  1. 0/4 Test oidmapChristian Couder, Jun 15, 2019
  2. 1/4 t/helper: add test-oidmap.cChristian Couder, Jun 15, 2019
  3. 3/4 oidmap: use sha1hash() instead of static hash() functionChristian Couder, Jun 15, 2019
  4. 2/4 t: add t0016-oidmap.shChristian Couder, Jun 15, 2019
  5. 4/4 test-hashmap: remove 'hash' commandChristian Couder, Jun 15, 2019
  6. Jeff KingJun 19, 2019
  7. Jeff KingJun 19, 2019
  8. Christian CouderJun 19, 2019
  9. 0/17 drop non-object_id hashingJeff King, Jun 20, 2019
  10. 01/17 describe: fix accidental oid/hash type-punningJeff King, Jun 20, 2019
  11. Junio C HamanoJun 20, 2019
  12. Jeff KingJun 20, 2019
  13. 02/17 upload-pack: rename a "sha1" variable to "oid"Jeff King, Jun 20, 2019
  14. 03/17 pack-bitmap-write: convert some helpers to use object_idJeff King, Jun 20, 2019
  15. 04/17 pack-objects: convert packlist_find() to use object_idJeff King, Jun 20, 2019
  16. 05/17 pack-objects: convert locate_object_entry_hash() to object_idJeff King, Jun 20, 2019
  17. 06/17 object: convert lookup_unknown_object() to use object_idJeff King, Jun 20, 2019
  18. 07/17 object: convert lookup_object() to use object_idJeff King, Jun 20, 2019
  19. 08/17 object: convert internal hash_obj() to object_idJeff King, Jun 20, 2019
  20. 09/17 object: convert create_object() to use object_idJeff King, Jun 20, 2019
  21. Ramsay JonesJun 20, 2019
  22. Jeff KingJun 20, 2019
  23. 10/17 khash: drop broken oid_map typedefJeff King, Jun 20, 2019
  24. 11/17 khash: rename kh_oid_t to kh_oid_setJeff King, Jun 20, 2019
  25. 12/17 delta-islands: convert island_marks khash to use oidsJeff King, Jun 20, 2019
  26. Jonathan TanJun 20, 2019
  27. Jeff KingJun 20, 2019
  28. 13/17 pack-bitmap: convert khash_sha1 maps into kh_oid_mapJeff King, Jun 20, 2019
  29. 14/17 khash: drop sha1-specific map typesJeff King, Jun 20, 2019
  30. 15/17 khash: rename oid helper functionsJeff King, Jun 20, 2019
  31. Junio C HamanoJun 20, 2019
  32. Jeff KingJun 20, 2019
  33. René ScharfeJun 23, 2019
  34. Jeff KingJun 23, 2019
  35. 16/17 hash.h: move object_id definition from cache.hJeff King, Jun 20, 2019
  36. Junio C HamanoJun 20, 2019
  37. 17/17 hashmap: convert sha1hash() to oidhash()Jeff King, Jun 20, 2019

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.