Re: micro-optimizing json.c

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Jeff Davis <pgsql@j-davis.com>, Joe Conway <mail@joeconway.com>, Andrew Dunstan <andrew@dunslane.net>, Davin Shearer <davin@apache.org>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2023-12-08T03:28:50Z
Lists: pgsql-hackers
Nathan Bossart <nathandbossart@gmail.com> writes:
> I did both of these in v2, although I opted to test that the first
> character after the optional '-' was a digit instead of testing that it was
> _not_ an 'I' or 'N'.

Yeah, I thought about that too after sending my message.  This version
LGTM, although maybe the comment could be slightly more verbose with
explicit reference to Inf/NaN as being the cases we need to quote.

> I think there are some similar improvements that we can make for
> JSONTYPE_BOOL and JSONTYPE_CAST, but I haven't tested them yet.

I am suspicious of using

	appendStringInfo(result, "\"%s\"", ...);

in each of these paths; snprintf is not a terribly cheap thing.
It might be worth expanding that to appendStringInfoChar/
appendStringInfoString/appendStringInfoChar.

			regards, tom lane



Commits

  1. Micro-optimize datum_to_json_internal() some more.

  2. Micro-optimize JSONTYPE_NUMERIC code path in json.c.