1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Use memcmp() rather than strncmp() when shorter string length is known.

It appears that this will be faster for all but the shortest strings;
at least one some platforms, memcmp() can use word-at-a-time comparisons.

Noah Misch, somewhat pared down.
This commit is contained in:
Robert Haas
2010-12-21 22:11:40 -05:00
parent c5160b7eec
commit 32ba2b5160
7 changed files with 33 additions and 33 deletions

View File

@ -546,7 +546,7 @@ gist_tqcmp(ltree *t, lquery *q)
while (an > 0 && bn > 0)
{
bl = LQL_FIRST(ql);
if ((res = strncmp(al->name, bl->name, Min(al->len, bl->len))) == 0)
if ((res = memcmp(al->name, bl->name, Min(al->len, bl->len))) == 0)
{
if (al->len != bl->len)
return al->len - bl->len;

View File

@ -68,7 +68,7 @@ ltree_compare(const ltree *a, const ltree *b)
while (an > 0 && bn > 0)
{
if ((res = strncmp(al->name, bl->name, Min(al->len, bl->len))) == 0)
if ((res = memcmp(al->name, bl->name, Min(al->len, bl->len))) == 0)
{
if (al->len != bl->len)
return (al->len - bl->len) * 10 * (an + 1);
@ -165,7 +165,7 @@ inner_isparent(const ltree *c, const ltree *p)
{
if (cl->len != pl->len)
return false;
if (strncmp(cl->name, pl->name, cl->len))
if (memcmp(cl->name, pl->name, cl->len))
return false;
pn--;
@ -373,7 +373,7 @@ ltree_index(PG_FUNCTION_ARGS)
bptr = LTREE_FIRST(b);
for (j = 0; j < b->numlevel; j++)
{
if (!(aptr->len == bptr->len && strncmp(aptr->name, bptr->name, aptr->len) == 0))
if (!(aptr->len == bptr->len && memcmp(aptr->name, bptr->name, aptr->len) == 0))
break;
aptr = LEVEL_NEXT(aptr);
bptr = LEVEL_NEXT(bptr);
@ -451,7 +451,7 @@ lca_inner(ltree **a, int len)
num = 0;
for (i = 0; i < Min(tmp, (*ptr)->numlevel - 1); i++)
{
if (l1->len == l2->len && strncmp(l1->name, l2->name, l1->len) == 0)
if (l1->len == l2->len && memcmp(l1->name, l2->name, l1->len) == 0)
num = i + 1;
else
break;