diff options
author | Robert Haas <rhaas@postgresql.org> | 2010-12-21 22:11:40 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2010-12-21 22:11:40 -0500 |
commit | 32ba2b516066688ff56e6d62a7ff4a01c88f5700 (patch) | |
tree | d92587bec7ec83167b11d71afd204fa72d1f6f80 /src/backend/utils/adt/varchar.c | |
parent | c5160b7eecf97a357375960b02a30317474334a3 (diff) | |
download | postgresql-32ba2b516066688ff56e6d62a7ff4a01c88f5700.tar.gz postgresql-32ba2b516066688ff56e6d62a7ff4a01c88f5700.zip |
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.
Diffstat (limited to 'src/backend/utils/adt/varchar.c')
-rw-r--r-- | src/backend/utils/adt/varchar.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 34acfb36180..b3d7ba3f403 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -690,7 +690,7 @@ bpchareq(PG_FUNCTION_ARGS) if (len1 != len2) result = false; else - result = (strncmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) == 0); + result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) == 0); PG_FREE_IF_COPY(arg1, 0); PG_FREE_IF_COPY(arg2, 1); @@ -717,7 +717,7 @@ bpcharne(PG_FUNCTION_ARGS) if (len1 != len2) result = true; else - result = (strncmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) != 0); + result = (memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), len1) != 0); PG_FREE_IF_COPY(arg1, 0); PG_FREE_IF_COPY(arg2, 1); @@ -905,7 +905,7 @@ internal_bpchar_pattern_compare(BpChar *arg1, BpChar *arg2) len1 = bcTruelen(arg1); len2 = bcTruelen(arg2); - result = strncmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), Min(len1, len2)); + result = memcmp(VARDATA_ANY(arg1), VARDATA_ANY(arg2), Min(len1, len2)); if (result != 0) return result; else if (len1 < len2) |