Re: strncmp->memcmp when we know the shorter length

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: strncmp->memcmp when we know the shorter length
Дата
Msg-id AANLkTikxwUzS7-hMfpJZY2GkFRRH+MZDiZiWzpcSzkbM@mail.gmail.com
обсуждение исходный текст
Ответ на Re: strncmp->memcmp when we know the shorter length  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: strncmp->memcmp when we know the shorter length  (Noah Misch <noah@leadboat.com>)
Список pgsql-hackers
On Tue, Dec 21, 2010 at 6:24 PM, Robert Haas <robertmhaas@gmail.com> wrote:
> On Mon, Dec 20, 2010 at 1:10 PM, Noah Misch <noah@leadboat.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.

A little benchmarking reveals that on my system (MacOS X 10.6.5) it
appears that strncmp() is faster for a 4 character string, but
memcmp() is faster for a 5+ character string.  So I think most of
these are pretty clear wins, but I have reverted the changes to
src/backend/tsearch because I'm not entirely confident that lexemes
and affixes will be long enough on average for this to be a win there.Please feel free to resubmit that part with
performanceresults 
showing that it works out to a win.  Some of the ltree changes
produced compiler warnings, so I omitted those also.  Committed the
rest.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: bug in SignalSomeChildren
Следующее
От: Tom Lane
Дата:
Сообщение: Re: strncmp->memcmp when we know the shorter length