| From: | ilmari(at)ilmari(dot)org (Dagfinn Ilmari =?utf-8?Q?Manns=C3=A5ker?=) |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | Andreas Karlsson <andreas(at)proxel(dot)se>, pgsql-hackers(at)postgreSQL(dot)org, Andres Freund <andres(at)anarazel(dot)de> |
| Subject: | Re: Cutting initdb's runtime (Perl question embedded) |
| Date: | 2017-04-17 16:49:54 |
| Message-ID: | d8jpogbq8r1.fsf@dalvik.ping.uio.no |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)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
| Attachment | Content-Type | Size |
|---|---|---|
| 0001-Avoid-unnecessary-regex-captures-in-Catalog.pm.patch | text/x-diff | 1.2 KB |
| 0002-Avoid-repeated-calls-to-Catalog-SplitDataLine.patch | text/x-diff | 3.2 KB |
| 0003-Inline-SplitDataLines-into-its-only-caller.patch | text/x-diff | 2.8 KB |
| 0004-Inline-check_nattrs-into-its-only-caller.patch | text/x-diff | 1.8 KB |
| 0005-Remove-pointless-Exporter-usage-in-Catalog.pm.patch | text/x-diff | 988 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2017-04-17 16:53:15 | Re: Cutting initdb's runtime (Perl question embedded) |
| Previous Message | Stephen Frost | 2017-04-17 16:43:25 | Re: pg_dump emits ALTER TABLE ONLY partitioned_table |