Em qui., 22 de jun. de 2023 às 05:50, Yuya Watari <watari.y...@gmail.com> escreveu:
> Hello, > > On Thu, Jun 22, 2023 at 1:43 PM David Rowley <dgrowle...@gmail.com> wrote: > > > 3. Avoid enlargement when nwords is equal wordnum. > > > Can save cycles when in corner cases? > > > > No, you're just introducing a bug here. Arrays in C are zero-based, > > so "wordnum >= a->nwords" is exactly the correct way to check if > > wordnum falls outside the bounds of the existing allocated memory. By > > changing that to "wordnum > a->nwords" we'll fail to enlarge the words > > array when it needs to be enlarged by 1 element. > > I agree with David. Unfortunately, some of the regression tests failed > with the v5 patch. These failures are due to the bug introduced by the > #3 change. > Yeah, this is my fault. Anyway thanks for the brilliant ideas about optimize bitmapset. I worked a bit more on the v4 version and made a new v6 version, with some changes. I made some benchmarks with v4 and v6: Windows 64 bits msvc 2019 64 bits == Query A == psql -U postgres -f c:\postgres_bench\tmp\bitmapset\create-tables-a.sql psql -U postgres -f c:\postgres_bench\tmp\bitmapset\query-a.sql ============= head: Time: 3489,097 ms (00:03,489) Time: 3501,780 ms (00:03,502) patched v4: Time: 2434,873 ms (00:02,435) Time: 2310,832 ms (00:02,311) Time: 2305,445 ms (00:02,305) Time: 2185,972 ms (00:02,186) Time: 2177,434 ms (00:02,177) Time: 2169,883 ms (00:02,170) patched v6: Time: 2162,633 ms (00:02,163) Time: 2159,805 ms (00:02,160) Time: 2002,771 ms (00:02,003) Time: 1944,436 ms (00:01,944) Time: 1906,364 ms (00:01,906) Time: 1903,897 ms (00:01,904) == Query B == psql -U postgres -f c:\postgres_bench\tmp\bitmapset\create-tables-b.sql psql -U postgres -f c:\postgres_bench\tmp\bitmapset\query-b.sql patched v4: Time: 2684,360 ms (00:02,684) Time: 2482,571 ms (00:02,483) Time: 2452,699 ms (00:02,453) Time: 2465,223 ms (00:02,465) patched v6: Time: 1837,775 ms (00:01,838) Time: 1801,274 ms (00:01,801) Time: 1800,802 ms (00:01,801) Time: 1798,786 ms (00:01,799) I can see some improvement, would you mind testing v6 and reporting back? regards, Ranier Vilela
remove_zero_trailing_words_from_bitmapsets_v6.patch
Description: Binary data