Re: define pg_structiszero(addr, s, r)
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: David Rowley <dgrowleyml@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Peter Eisentraut <peter@eisentraut.org>, Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@lists.postgresql.org
Date: 2024-11-01T07:14:09Z
Lists: pgsql-hackers
On Fri, Nov 01, 2024 at 06:33:51AM +0000, Bertrand Drouvot wrote: > We could try to write a more elaborate version of pg_memory_is_all_zeros(), but > as it looks like there is only one use case, then it's probably better to not > implement (revert) this change here and "just" add a comment as to why pg_memory_is_all_zeros() > should not be used here, thoughts? > > [0]: https://godbolt.org/z/xqnW4MPY5 Note that the two printf() calls make the code less optimized. Anyway, I see the following from bufpage.s for these lines under -O2: 1) On HEAD at 07e9e28b56db: .LVL306: .loc 3 201 23 is_stmt 1 discriminator 1 view .LVU547 cmpq $1024, %rbx <- Yep, that's wrong. jne .L417 2) On HEAD at 49d6c7d8daba: .LVL299: .loc 1 131 16 is_stmt 0 discriminator 1 view .LVU524 cmpq $8192, %rbx je .L419 3) With the patch sent at [1]: .LVL306: .loc 3 201 23 is_stmt 1 discriminator 1 view .LVU545 cmpq $8192, %rbx jne .L417 So it does not matter one way or another for 2) or 3), does it? [1]: https://www.postgresql.org/message-id/ZyR02ofHiWG1HmLI@paquier.xyz -- Michael
Commits
-
Use pg_memory_is_all_zeros() in PageIsVerifiedExtended()
- 03a42c9652f8 18.0 landed
-
Optimize pg_memory_is_all_zeros() in memutils.h
- 5be1dabd2ae0 18.0 landed
-
Remove use of pg_memory_is_all_zeros() in bufpage.c
- e819bbb7c82a 18.0 landed
-
Add pg_memory_is_all_zeros() in memutils.h
- 07e9e28b56db 18.0 landed