mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
Some speed improvements
This commit is contained in:
parent
e353a35f64
commit
34d4c4f462
6 changed files with 61 additions and 30 deletions
|
|
@ -24,13 +24,15 @@ void my_caseup_str_mb(CHARSET_INFO * cs, char *str)
|
|||
{
|
||||
register uint32 l;
|
||||
register char *end=str+strlen(str); /* BAR TODO: remove strlen() call */
|
||||
register uchar *map=cs->to_upper;
|
||||
|
||||
while (*str)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, str,end)))
|
||||
str+=l;
|
||||
else
|
||||
{
|
||||
*str=(char)my_toupper(cs,(uchar)*str);
|
||||
*str=(char) map[(uchar)*str];
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
|
@ -40,13 +42,15 @@ void my_casedn_str_mb(CHARSET_INFO * cs, char *str)
|
|||
{
|
||||
register uint32 l;
|
||||
register char *end=str+strlen(str);
|
||||
register uchar *map=cs->to_lower;
|
||||
|
||||
while (*str)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, str,end)))
|
||||
str+=l;
|
||||
else
|
||||
{
|
||||
*str=(char)my_tolower(cs,(uchar)*str);
|
||||
*str=(char) map[(uchar)*str];
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
|
@ -56,13 +60,15 @@ void my_caseup_mb(CHARSET_INFO * cs, char *str, uint length)
|
|||
{
|
||||
register uint32 l;
|
||||
register char *end=str+length;
|
||||
register uchar *map=cs->to_upper;
|
||||
|
||||
while (str<end)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, str,end)))
|
||||
str+=l;
|
||||
else
|
||||
{
|
||||
*str=(char)my_toupper(cs,(uchar)*str);
|
||||
*str=(char) map[(uchar)*str];
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
|
@ -72,13 +78,15 @@ void my_casedn_mb(CHARSET_INFO * cs, char *str, uint length)
|
|||
{
|
||||
register uint32 l;
|
||||
register char *end=str+length;
|
||||
register uchar *map=cs->to_lower;
|
||||
|
||||
while (str<end)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, str,end)))
|
||||
str+=l;
|
||||
else
|
||||
{
|
||||
*str=(char)my_tolower(cs,(uchar)*str);
|
||||
*str=(char) map[(uchar)*str];
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
|
@ -88,6 +96,8 @@ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t)
|
|||
{
|
||||
register uint32 l;
|
||||
register const char *end=s+strlen(s);
|
||||
register uchar *map=cs->to_upper;
|
||||
|
||||
while (s<end)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, s,end)))
|
||||
|
|
@ -98,7 +108,7 @@ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t)
|
|||
}
|
||||
else if (my_ismbhead(cs, *t))
|
||||
return 1;
|
||||
else if (my_toupper(cs,(uchar) *s++) != my_toupper(cs,(uchar) *t++))
|
||||
else if (map[(uchar) *s++] != map[(uchar) *t++])
|
||||
return 1;
|
||||
}
|
||||
return *t;
|
||||
|
|
@ -110,6 +120,8 @@ int my_strncasecmp_mb(CHARSET_INFO * cs,
|
|||
{
|
||||
register uint32 l;
|
||||
register const char *end=s+len;
|
||||
register uchar *map=cs->to_upper;
|
||||
|
||||
while (s<end)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, s,end)))
|
||||
|
|
@ -120,7 +132,7 @@ int my_strncasecmp_mb(CHARSET_INFO * cs,
|
|||
}
|
||||
else if (my_ismbhead(cs, *t))
|
||||
return 1;
|
||||
else if (my_toupper(cs,(uchar) *s++) != my_toupper(cs,(uchar) *t++))
|
||||
else if (map[(uchar) *s++] != map[(uchar) *t++])
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -46,43 +46,49 @@ int my_strnncoll_simple(CHARSET_INFO * cs,const char *s, uint slen,
|
|||
|
||||
void my_caseup_str_8bit(CHARSET_INFO * cs,char *str)
|
||||
{
|
||||
while ((*str = (char) my_toupper(cs,(uchar) *str)) != 0)
|
||||
register uchar *map=cs->to_upper;
|
||||
while ((*str = (char) map[(uchar) *str]) != 0)
|
||||
str++;
|
||||
}
|
||||
|
||||
|
||||
void my_casedn_str_8bit(CHARSET_INFO * cs,char *str)
|
||||
{
|
||||
while ((*str = (char) my_tolower(cs,(uchar)*str)) != 0)
|
||||
register uchar *map=cs->to_lower;
|
||||
while ((*str = (char) map[(uchar)*str]) != 0)
|
||||
str++;
|
||||
}
|
||||
|
||||
|
||||
void my_caseup_8bit(CHARSET_INFO * cs, char *str, uint length)
|
||||
{
|
||||
register uchar *map=cs->to_upper;
|
||||
for ( ; length>0 ; length--, str++)
|
||||
*str= (char) my_toupper(cs,(uchar)*str);
|
||||
*str= (char) map[(uchar)*str];
|
||||
}
|
||||
|
||||
void my_casedn_8bit(CHARSET_INFO * cs, char *str, uint length)
|
||||
{
|
||||
register uchar *map=cs->to_lower;
|
||||
for ( ; length>0 ; length--, str++)
|
||||
*str= (char)my_tolower(cs,(uchar) *str);
|
||||
*str= (char) map[(uchar) *str];
|
||||
}
|
||||
|
||||
|
||||
int my_strcasecmp_8bit(CHARSET_INFO * cs,const char *s, const char *t)
|
||||
{
|
||||
while (my_toupper(cs,(uchar) *s) == my_toupper(cs,(uchar) *t++))
|
||||
register uchar *map=cs->to_upper;
|
||||
while (map[(uchar) *s] == map[(uchar) *t++])
|
||||
if (!*s++) return 0;
|
||||
return ((int) my_toupper(cs,(uchar) s[0]) - (int) my_toupper(cs,(uchar) t[-1]));
|
||||
return ((int) map[(uchar) s[0]] - (int) map[(uchar) t[-1]]);
|
||||
}
|
||||
|
||||
|
||||
int my_strncasecmp_8bit(CHARSET_INFO * cs,
|
||||
const char *s, const char *t, uint len)
|
||||
{
|
||||
while (len-- != 0 && my_toupper(cs,(uchar)*s++) == my_toupper(cs,(uchar)*t++)) ;
|
||||
register uchar *map=cs->to_upper;
|
||||
while (len-- != 0 && map[(uchar)*s++] == map[(uchar)*t++]) ;
|
||||
return (int) len+1;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue