[Mono-devel-list] mcs code for switches on strings

Marcus mathpup at mylinuxisp.com
Sun Mar 21 17:53:52 EST 2004

On Sunday 21 March 2004 3:37 pm, Paolo Molaro wrote:

Currently, cscc uses different implementations for switches depending on the 
number of cases. I don't have the exact details handy. I also brought up this 
issue with Rhys, and he said that he's working on writing some test programs 
that are more thorough than mine. (My short program fails to intern a large 
number of different strings, and the few strings present are comparatively 

These tests might useful be useful on Mono, so I will post here if I can 
obtain any test programs that might be released.

> Currently IsInterned () is a little expensive, so for a small number of
> cases it dominates the runtime. The current implementation could be
> improved a little, or we could write a different one and see how it
> performs. Note that on the MS runtime you'll get beasically the same
> numbers (at least on .Net 1.0, dunno if they optimized it later).
> There are a number of strategies to implement switch on strings:
> 1) ifs with String.Equals ()
> 2) ifs after IsInterned ()
> 3) binary search
> 4) hashtable + switch on number

More information about the Mono-devel-list mailing list