[Mono-devel-list] Patch for String.Equals

Ben Maurer 05mauben at hawken.edu
Mon Apr 5 07:43:07 EDT 2004

To optimize for both platforms, the native integer size should be used.
You can do this by casting the char* to a void**, and using
string.Length * sizeof (char*) / sizeof (void**).

The first char of a string is always going to be aligned to a dword
boundry, because of how the object is layed out. I am not sure if on a
64 bit it would be qword algigned.

-- Ben

>>> Michal Moskal <malekith at pld-linux.org> 04/05/04 07:33 AM >>>
On Sun, Apr 04, 2004 at 07:48:52PM -0400, Ben Maurer wrote:
> Hello,
> This is very interesting. Am going to look into the assembly we
> to see if this is the best we can do.
> I am a bit unsure about the long compares, what do they gain us?
> Internally, they are just two int compares.

x86-64 anyone?

However the problem with comparing strings as ints -- are they properly
aligned? Using unaligned access on x86 slows things down, and on ppc
it AFAIR generates an exception.

: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?
Mono-devel-list mailing list
Mono-devel-list at lists.ximian.com

More information about the Mono-devel-list mailing list