Micro-optimize AllocSetFreeIndex() by reference to pg_bitutils code. Use __builtin_clz() where available. Where it isn't, we can still win a little by using the pg_leftmost_one_pos[] lookup table instead of having a private table.
Also drop the initial right shift by ALLOC_MINBITS in favor of subtracting ALLOC_MINBITS from the leftmost-one-pos result. This is a win because the compiler can fold that adjustment into other constants it'd have to add anyway, making the shift-removal free. Also, we can explain this coding as an unrolled form of pg_leftmost_one_pos32(), even though that's a bit ahistorical since it long predates pg_bitutils.h. John Naylor, with some cosmetic adjustments by me Discussion: https://postgr.es/m/CACPNZCuNUGMxjK7WTn_=wznrbfasddbxmjsvf2+m9mdmenw...@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/0ce38730ac72029f3f2c95ae80b44f5b9060cbcc Modified Files -------------- src/backend/utils/mmgr/aset.c | 56 ++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 25 deletions(-)
