Re: use CLZ instruction in AllocSetFreeIndex()
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: John Naylor <john.naylor@2ndquadrant.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-12-27T16:29:47Z
Lists: pgsql-hackers
On 2019-Dec-27, Tom Lane wrote: > This kind of leads me to wonder if we don't need to expend more > effort on the non-CLZ version of pg_leftmost_one_pos32; it seems > like it shouldn't be losing this badly to the only-slightly- > improved logic that's currently in AllocSetFreeIndex. On the > other hand, the buildfarm thinks that __builtin_clz is essentially > universal these days --- the only active non-MSVC critter that > reports not having it is anole. So maybe it's not worth sweating > over that. Perhaps what we really ought to be working on is > finding MSVC equivalents for __builtin_clz and friends. Apparently clz() can be written using _BitScanReverse(), per https://stackoverflow.com/a/20468180 https://docs.microsoft.com/en-us/cpp/intrinsics/bitscanreverse-bitscanreverse64?view=vs-2015 -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Micro-optimize AllocSetFreeIndex() by reference to pg_bitutils code.
- 0ce38730ac72 13.0 landed
-
Speed up AllocSetFreeIndex, which is a significant cost in palloc and pfree,
- ab5b4e2f9ede 9.0.0 cited