Re: Performance improvements for src/port/snprintf.c
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
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:14:54Z
Lists: pgsql-hackers
Hi, On 2018-10-03 12:07:32 -0400, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > FWIW, it seems that using a local buffer and than pstrdup'ing that in > > float8out_internal is a bit faster, and would probably save a bit of > > memory on average: > > float8out using sprintf via pg_double_to_string, pstrdup: > > 15370.774 > > float8out using strfromd via pg_double_to_string, pstrdup: > > 13498.331 > > [ 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? Greetings, Andres Freund
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