Re: Change GUC hashtable to use simplehash?
Andres Freund <andres@anarazel.de>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Silence warning in older versions of Valgrind
- fde7c0164ea2 17.5 landed
- 0600d276d485 18.0 landed
-
Revert "Speed up tail processing when hashing aligned C strings, take two"
- 6555fe197914 17.3 landed
- 235328ee4ae4 18.0 landed
-
Speed up tail processing when hashing aligned C strings, take two
- a365d9e2e8c1 17.0 landed
-
Teach fasthash_accum to use platform endianness for bytewise loads
- 0c25fee35903 17.0 landed
-
Add macro to disable address safety instrumentation
- db17594ad73a 17.0 landed
-
Convert uses of hash_string_pointer to fasthash equivalent
- f956ecd0353b 17.0 landed
-
Speed up tail processing when hashing aligned C strings
- 07f0f6abfc7f 17.0 landed
-
Add helper functions for dshash tables with string keys.
- 42a1de3013ea 17.0 cited
-
Fix warnings in cpluspluscheck
- 257998508672 17.0 landed
-
Further cosmetic review of hashfn_unstable.h
- b83033c3cff5 17.0 landed
-
Simplify initialization of incremental hash state
- 9ed3ee5001b6 17.0 landed
-
Add optimized C string hashing
- 0aba2554409e 17.0 landed
-
Add inline incremental hash functions for in-memory use
- e97b672c88f6 17.0 landed
-
Make all Perl warnings fatal
- c5385929593d 17.0 cited
Hi, On 2023-11-17 16:01:31 -0800, Jeff Davis wrote: > On Fri, 2023-11-17 at 15:27 -0800, Andres Freund wrote: > > At > > first I thought that that's largely because you aren't using > > SH_STORE_HASH. > > I might want to use that in the search_path cache, then. The lookup > wasn't showing up much in the profile the last I checked, but I'll take > a second look. It also matters for insertions, fwiw. > > Then I noticed that memory usage was too large when creating many > > GUCs - a bit > > of debugging later, I figured out that that's due to guc_name_hash() > > being > > terrifyingly bad. There's no bit mixing whatsoever! > > Wow. > > It seems like hash_combine() could be more widely used in other places, > too? I don't think hash_combine() alone helps that much - you need to actually use a hash function for the values you are combining. Using a character value alone as a 32bit hash value unsurprisingly leads to very distribution of bits set in hashvalues. > Here it seems like a worse problem because strings really need > mixing, and maybe ExecHashGetHashValue doesn't. But it seems easier to > use hash_combine() everywhere so that we don't have to think about > strange cases. Yea. > > I think, independent of this patch, it might be worth requiring that > > hash > > table lookups applied the transformation before the lookup. A > > comparison > > function this expensive is not great... > > The requested name is already case-folded in most contexts. We can do a > lookup first, and if that fails, case-fold and try again. I'll hack up > a patch -- I believe that would be measurable for the proconfigs. I'd just always case fold before lookups. The expensive bit of the case folding imo is that you need to do awkward things during hash lookups. Greetings, Andres Freund