Re: Inlining comparators as a performance optimisation
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Bruce Momjian <bruce@momjian.us>, Peter Geoghegan <peter@2ndquadrant.com>, PG Hackers <pgsql-hackers@postgresql.org>
Date: 2011-12-07T01:46:27Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Speed up conversion of signed integers to C strings.
- 4fc115b2e981 9.1.0 cited
-
Remove some unnecessary tests of pgstat_track_counts.
- f4d242ef9473 9.1.0 cited
-
Remove cvs keywords from all files.
- 9f2e21138693 9.1.0 cited
-
Code cleanup for function prototypes: change two K&R-style prototypes
- b9954fbb4ef2 8.3.0 cited
-
Use Min() instead of min() in qsort, for consistency and to avoid
- b38900c76776 8.2.0 cited
-
pgindent run for 8.2.
- f99a569a2ee3 8.2.0 cited
-
Switch over to using our own qsort() all the time, as has been proposed
- 6edd2b4a91bd 8.2.0 cited
Attachments
- sort-support-3.patch (text/x-patch) patch
Robert Haas <robertmhaas@gmail.com> writes: > Works for me. I think we should go ahead and get this part committed > first, and then we can look at the inlining stuff as a further > optimization for certain cases... Yeah. Attached is a second-draft patch, which I'm fairly happy with except that the documentation hasn't been updated. It extends the changes into the executor as well as analyze.c, with the result that we can get rid of some of the old infrastructure altogether. (inlineApplySortFunction is still there for the moment, though.) Also, I adopted a style similar to what we've done for inlined list functions to make ApplyComparatorFunction inline-able by all callers. There are three somewhat-independent lines of work to pursue from here: 1. Adding sortsupport infrastructure for more datatypes. 2. Revising nbtree and related code to use this infrastructure. 3. Integrating Peter's work into this framework. I'll try to take care of #1 for at least a few key datatypes before I commit, but I think #2 is best done as a separate patch, so I'll postpone that till later. regards, tom lane