Re: Cutting initdb's runtime (Perl question embedded)
Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
From: ilmari@ilmari.org (Dagfinn Ilmari Mannsåker )
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers@postgreSQL.org,
Andres Freund <andres@anarazel.de>
Date: 2017-04-17T16:49:54Z
Lists: pgsql-hackers
Attachments
Tom Lane <tgl@sss.pgh.pa.us> writes: > There's certainly lots more that could be done in the genbki code, > but I think all we can justify at this stage of the development > cycle is to get the low-hanging fruit for testing speedups. I threw Devel::NYTProf at it and picked some more low-hanging fruit. Attached are separate patches for each change, and here are the runtimes of genbki.pl and Gen_fmgrtab.pl, respectively, after each patch (averages of 5 runs, in millseconds): master (b6dd1271): 355, 182 1: Avoid unnecessary regex captures: 349, 183 2: Avoid repeated calls to SplitDataLine: 316, 158 3: Inline SplitDataLine: 291, 141 4: Inline check_natts: 287, 141 Together they shave 68ms or 19.2% off the runtime of genbki.pl and 41ms or 22.5% off the runtime of Gen_fmgrtab.pl Finally, one non-performance patch, which just removes the use of Exporter in Catalog.pm, since none of the users actually import anything from it. - ilmari -- "I use RMS as a guide in the same way that a boat captain would use a lighthouse. It's good to know where it is, but you generally don't want to find yourself in the same spot." - Tollef Fog Heen
Commits
-
Attempt to identify system timezone by reading /etc/localtime symlink.
- 995b4fe0b14f 11.4 landed
- 8de574aa8bf7 10.9 landed
- 77dc741a1727 9.5.18 landed
- 75b0f21e1b19 9.6.14 landed
- 37011bcb30a9 9.4.23 landed
- 23bd3cec6eb1 12.0 landed
-
Make sure to run one initdb TAP test with no TZ set
- 033b969edde6 10.0 landed
-
Use one transaction while reading postgres.bki, not one per line.
- 85a0781334a2 10.0 landed
-
Move bootstrap-time lookup of regproc OIDs into genbki.pl.
- 5e39f06cfe65 10.0 landed