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-27T00:25:44Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2018-09-26 19:45:07 -0400, Tom Lane wrote: >> No, there are no additional layers that weren't there before --- >> snprintf.c's snprintf() slots in directly where the platform's did before. > Hm? What I mean is that we can't realistically be faster with the > current architecture, because for floating point we end up doing glibc > sprintf() in either case. Oh, you mean specifically for the float conversion case. I still say that I will *not* accept judging this code solely on the float case. The string and integer cases are at least as important if not more so. >> Interesting. strfromd() is a glibc-ism, and a fairly recent one at >> that (my RHEL6 box doesn't seem to have it). > It's C99 afaict. It's not in POSIX 2008, and I don't see it in my admittedly-draft copy of C99 either. But that's not real relevant -- I don't see much reason not to use it if we want a quick and dirty answer for the platforms that have it. If we had more ambition, we might consider stealing the float conversion logic out of the "stb" library that Alexander pointed to upthread. It says it's public domain, so there's no license impediment to borrowing some code ... 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