Re: computing completion tag is expensive for pgbench -S -M prepared

From: Andres Freund <andres(at)anarazel(dot)de>
To: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: computing completion tag is expensive for pgbench -S -M prepared
Date: 2018-06-07 18:31:35
Message-ID: 20180607183135.rj5bu5ir5xsaffms@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2018-06-07 17:01:47 +1200, David Rowley wrote:
> On 7 June 2018 at 16:13, Andres Freund <andres(at)anarazel(dot)de> wrote:
> > in PortalRun(). That's actually fairly trivial to optimize - we don't
> > need the full blown snprintf machinery here. A quick benchmark
> > replacing it with:
> >
> > memcpy(completionTag, "SELECT ", sizeof("SELECT "));
> > pg_lltoa(nprocessed, completionTag + 7);
>
> I'd also noticed something similar with some recent benchmarks I was
> doing for INSERTs into partitioned tables. In my case I saw as high as
> 0.7% of the time spent building the INSERT tag. So I think it's worth
> fixing this.

I'm kinda surprised that I never noticed this until recently. I wonder
if there's a glibc or compiler regression causing this. There's some
string optimization passes, it could be that it now does less.

> I think it would be better to invent a function that accepts a
> CmdType, int64 and Oid that copies the tag into the supplied buffer,
> then make a more generic change that also replaces the code in
> ProcessQuery() which builds the tag. I'm sure there must be some way
> to get the CmdType down to the place you've patched so we can get rid
> of the if (strcmp(portal->commandTag, "SELECT") == 0) line too.

Generally sounds reasonable, I'm not sure it's worth to do the surgery
to avoid the strcmp(). That's a larger change that's somewhat
independent...

Greetings,

Andres Freund

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2018-06-07 19:24:41 Re: computing completion tag is expensive for pgbench -S -M prepared
Previous Message Andres Freund 2018-06-07 18:21:04 Re: computing completion tag is expensive for pgbench -S -M prepared