Re: Performance improvements for src/port/snprintf.c

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org,Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>,Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>,Alexander Kuzmenkov <a(dot)kuzmenkov(at)postgrespro(dot)ru>,PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Performance improvements for src/port/snprintf.c
Date: 2018-09-27 04:21:06
Message-ID: 6FEC34CD-B8C0-44E2-8D1F-2320568BDC78@anarazel.de
Views: Raw Message | Whole Thread | Download mbox
Thread:
Lists: pgsql-hackers

On September 26, 2018 9:04:08 PM PDT, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com> wrote:
>On Thu, Sep 27, 2018 at 3:55 PM Andrew Gierth
><andrew(at)tao11(dot)riddles(dot)org(dot)uk> wrote:
>> >>>>> "Andres" == Andres Freund <andres(at)anarazel(dot)de> writes:
>> Andres> Hm, stb's results just for floating point isn't bad. The
>above
>> Andres> numbers were for %f %f. But as the minimal usage would be
>about
>> Andres> the internal usage of dopr(), here's comparing %.*f:
>>
>> Andres> snprintf time = 1324.87 ms total, 0.000264975 ms per
>iteration
>> Andres> pg time = 1434.57 ms total, 0.000286915 ms per iteration
>> Andres> stbsp time = 552.14 ms total, 0.000110428 ms per iteration
>>
>> Hmm. We had a case recently on IRC where the performance of float8out
>> turned out to be the major bottleneck: a table of about 2.7 million
>rows
>> and ~70 float columns showed an overhead of ~66 seconds for doing
>COPY
>> as opposed to COPY BINARY (the actual problem report was that doing
>> "select * from table" from R was taking a minute+ longer than
>expected,
>> we got comparative timings for COPY just to narrow down causes).
>>
>> That translates to approx. 0.00035 ms overhead (i.e. time(float8out)
>-
>> time(float8send)) per conversion (Linux server, hardware unknown).
>>
>> That 66 seconds was the difference between 18s and 1m24s, so it
>wasn't a
>> small factor but totally dominated the query time.
>
>For perfect and cheap round trip to ASCII, not for human consumption,
>I wonder about the hexadecimal binary float literal format from C99
>(and showing up in other places too).

I'm not quite sure how we realistically would migrate to that though. Clients and their users won't understand it, and the more knowledgeable ones will already use the binary protocol.

Answers
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2018-09-27 04:24:48 Re: Let's stop with the retail rebuilds of src/port/ files already
Previous Message Andres Freund 2018-09-27 04:19:13 Re: Performance improvements for src/port/snprintf.c