Improve sift up/down code in binaryheap.c and logtape.c.
Tom Lane <tgl@sss.pgh.pa.us>
Improve sift up/down code in binaryheap.c and logtape.c. Borrow the logic that's long been used in tuplesort.c: instead of physically swapping the data in two heap entries, keep the value that's being sifted up or down in a local variable, and just move the other values as necessary. This makes the code shorter as well as faster. It's not clear that any current callers are really time-critical enough to notice, but we might as well code heap maintenance the same way everywhere. Ma Liangzhu and Tom Lane Discussion: https://postgr.es/m/17336-fc4e522d26a750fd@postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/lib/binaryheap.c | modified | +40 −30 |
| src/backend/utils/sort/logtape.c | modified | +23 −31 |
Discussion
- BUG #17336: logtape sort performance and overflow 2 messages · 2021-12-14