using pg_mblen. Therefore, pg_mblen is executed many times, and it
becomes a bottleneck.
This patch makes a short cut, and reduces execution frequency of
pg_mblen by comparing the first byte first.
a_ogawa
static int
wchareq(unsigned char *p1, unsigned char *p2)
{
- int l;
+ int p1_len;
- l = pg_mblen(p1);
- if (pg_mblen(p2) != l)
+ /* Optimization: quickly compare the first byte. */
+ if(*p1 != *p2)
return (0);
- while (l--)
+
+ p1_len = pg_mblen(p1);
+ if (pg_mblen(p2) != p1_len)
+ return (0);
+
+ /* They are the same length */
+ while (p1_len--)
{
if (*p1++ != *p2++)
return (0);