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: Alexander Kuzmenkov <a.kuzmenkov@postgrespro.ru>,
pgsql-hackers@lists.postgresql.org
Date: 2018-09-27T03:21:35Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2018-09-26 21:44:41 -0400, Tom Lane wrote: >> BTW, were you thinking of plugging in strfromd() inside snprintf.c, >> or just invoking it directly from float[48]out? The latter would >> presumably be cheaper, and it'd solve the most pressing performance >> problem, if not every problem. > I wasn't actually seriously suggesting we should use strfromd, but I > guess one way to deal with this would be to add a wrapper routine that > could directly be called from float[48]out *and* from fmtfloat(). Yeah, something along that line occurred to me a bit later. > Wonder > if it'd be worthwhile to *not* pass that wrapper a format string, but > instead pass the sprecision as an explicit argument. Right, getting rid of the round trip to text for the precision seems like a win. I'm surprised that strfromd is defined the way it is and not with something like (double val, char fmtcode, int precision, ...) 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