From: | Gurjeet Singh <singh(dot)gurjeet(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Noah Misch <noah(at)leadboat(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: strncmp->memcmp when we know the shorter length |
Date: | 2010-12-22 01:29:46 |
Message-ID: | AANLkTi=Fo9-ppsGYE5qdEfaWSNDst6VCumc1SPXvhoT_@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Dec 21, 2010 at 6:24 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Mon, Dec 20, 2010 at 1:10 PM, Noah Misch <noah(at)leadboat(dot)com> wrote:
> > When the caller knows the smaller string length, memcmp and strncmp are
> > functionally equivalent. Since memcmp need not watch each byte for a
> NULL
> > terminator, it often compares a CPU word at a time for better
> performance. The
> > attached patch changes use of strncmp to memcmp where we have the length
> of the
> > shorter string. I was most interested in the varlena.c instances, but I
> tried
> > to find all applicable call sites. To benchmark it, I used the attached
> > "bench-texteq.sql". This patch improved my 5-run average timing of the
> SELECT
> > from 65.8s to 56.9s, a 13% improvement. I can't think of a case where
> the
> > change should be pessimal.
>
> This is a good idea. I will check this over and commit it.
>
Doesn't this risk accessing bytes beyond the shorter string? Look at the
warning above the StrNCpy(), for example.
Regards,
--
gurjeet.singh
@ EnterpriseDB - The Enterprise Postgres Company
http://www.EnterpriseDB.com
singh(dot)gurjeet(at){ gmail | yahoo }.com
Twitter/Skype: singh_gurjeet
Mail sent from my BlackLaptop device
From | Date | Subject | |
---|---|---|---|
Next Message | Rob Wultsch | 2010-12-22 01:45:55 | Re: Can postgres create a file with physically continuous blocks. |
Previous Message | Alvaro Herrera | 2010-12-22 01:24:12 | Re: Patch BUG #5103: "pg_ctl -w (re)start" fails with custom unix_socket_directory |