Re: Performance improvements for src/port/snprintf.c
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@lists.postgresql.org,
Thomas Munro <thomas.munro@enterprisedb.com>,
Andrew Gierth <andrew@tao11.riddles.org.uk>,
Alexander Kuzmenkov <a.kuzmenkov@postgrespro.ru>
Date: 2018-10-03T16:22:13Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2018-10-03 12:07:32 -0400, Tom Lane wrote: >> [ scratches head ... ] How would that work? Seems like it necessarily >> adds a strlen() call to whatever we'd be doing otherwise. palloc isn't >> going to be any faster just from asking it for slightly fewer bytes. >> I think there might be something wrong with your test scenario ... >> or there's more noise in the numbers than you thought. > I guess the difference is that we're more likely to find reusable chunks > in aset.c and/or need fewer OS allocations. As the memory is going to > be touched again very shortly afterwards, the cache effects probably are > neglegible. > The strlen definitely shows up in profiles, it just seems to save at > least as much as it costs. > Doesn't strike me as THAT odd? What it strikes me as is excessively dependent on one particular test scenario. I don't mind optimizations that are tradeoffs between well-understood costs, but this smells like handwaving that's going to lose as much or more often than winning, once it hits the real world. regards, tom lane
Commits
-
Improve snprintf.c's handling of NaN, Infinity, and minus zero.
- 6eb3eb577d76 12.0 landed
-
Rationalize snprintf.c's handling of "ll" formats.
- 595a0eab7f42 12.0 landed
-
Provide fast path in snprintf.c for conversion specs that are just "%s".
- 6d842be6c118 12.0 landed
-
Make assorted performance improvements in snprintf.c.
- abd9ca377d66 12.0 landed
-
Set snprintf.c's maximum number of NL arguments to be 31.
- 625b38ea0e98 12.0 cited
-
Always use our own versions of *printf().
- 96bf88d52711 12.0 cited