pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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>
Cc: Andrew Gierth <andrew@tao11.riddles.org.uk>
Cc: Alexander Kuzmenkov <a.kuzmenkov@postgrespro.ru>
Subject: Re: Performance improvements for src/port/snprintf.c
Date: Wed, 03 Oct 2018 12:54:52 -0400
Message-ID: <28321.1538585692@sss.pgh.pa.us> (raw)
In-Reply-To: <20181003163717.oycshpp2hnctvtfj@alap3.anarazel.de>
References: <87r2hffwda.fsf@news-spur.riddles.org.uk>
	<CAEepm=1-3AG2O25VNnLXsjCM3EHBLW=jyJtpp_AMGG6a-GRJZA@mail.gmail.com>
	<6FEC34CD-B8C0-44E2-8D1F-2320568BDC78@anarazel.de>
	<30551.1538517271@sss.pgh.pa.us>
	<20181003060936.zul7mfkcu5w7rotg@alap3.anarazel.de>
	<25583.1538569214@sss.pgh.pa.us>
	<20181003155207.b3lqmovuv2c5c4id@alap3.anarazel.de>
	<26510.1538582852@sss.pgh.pa.us>
	<20181003161454.ozeioucsimjg5g6m@alap3.anarazel.de>
	<27041.1538583733@sss.pgh.pa.us>
	<20181003163717.oycshpp2hnctvtfj@alap3.anarazel.de>

Andres Freund <andres@anarazel.de> writes:
> It seems the general "use strfromd if available" approach is generally
> useful, even if we need to serialize the precision.

Agreed.

> Putting it into an
> inline appears to be helpful, avoids some of the otherwise precision
> related branches.  Do you have any feelings about which header to put
> the code in?  I used common/string.h so far.

I do not think it should be in a header, for two reasons:

(1) The need to use sprintf for portability means that we need very
tight constraints on the precision spec *and* the buffer size *and*
the format type (%f pretty much destroys certainty about how long the
output string is).  So this isn't going to be general purpose code.
I think just writing it into float[48]out is sufficient.

(2) It's already the case that most code trying to emit floats ought
to go through float[48]out, in order to have standardized treatment
of Inf and NaN.  Providing some other API in a common header would
just create a temptation to break that policy.

Now, if we did write our own float output code then we would standardize
Inf/NaN outputs inside that, and both of these issues would go away ...
but I think what we'd do is provide something strfromd-like as an
alternate API for that code, so we still won't need a wrapper.
And anyway it doesn't sound like either of us care to jump that hurdle
right now.

			regards, tom lane




view thread (65+ messages)  latest in thread

Message-ID: <28321.1538585692@sss.pgh.pa.us>
Permalink:  ../28321.1538585692@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/28321.1538585692@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: tgl@sss.pgh.pa.us, andres@anarazel.de, thomas.munro@enterprisedb.com, andrew@tao11.riddles.org.uk, a.kuzmenkov@postgrespro.ru
  Subject: Re: Performance improvements for src/port/snprintf.c
  In-Reply-To: <28321.1538585692@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox