[Mono-devel-list] Char.IsXXX() patch: from InternalCall to managed
05mauben at hawken.edu
Wed Feb 18 08:02:55 EST 2004
Very good catch. Actually, this has alot of impact because in the
future, this method might be able to be inlined.
For IsWhitespace, I would rather see all the switch elements enumerated
out. This is going to be faster than calling the other method, even if
it will get inlined (as I understand it, that is the design of the
Also, rather than the magic characters, can you please use constants and
a quick comment describing what they are:
// This character is the `foo' character. it is a whitespace character
const char seperator_foo = '\u2029';
+ int i = (int) c;
+ return i >= 0x2000 && i <= 0x200b
you should be able to do:
return c >= '\u2000' && c <= '\u200b';
>>> Atsushi Eno <atsushi at ximian.com> 02/18/04 01:19 AM >>>
I found that existing Char.IsWhitespace() and Char.IsSeparator() are
slower than MS.NET. I found that they are InternalCall, so I tried to
implement them in Char.cs natively and the got 2x speed. So I think
it would be better if we move these (and the same kind of) methods
into managed world.
BTW, Char.IsWhiteSpace() and g_unichar_isspace() are different in
some characters such as vertical space ('\v').
If it does not matter, I'll commit the patch later.
More information about the Mono-devel-list