On 10/17/04 Michal Moskal wrote: > > No, I don't think that it's a completely a runtime issue. There are at least > > three fundamentally-different mechanisms for handling a switch statement, > > including hashing, binary search, and a linear if/else. With CIL, there is > > the further complication of using the switch instruction versus the compare > > and branch sequences. > > However, when you have switch in the CIL, it's up to the JIT how to handle > it. And choosing between the if-else and the jump-table implementation > can be machine dependent, performance wise.
It's also cpu-dependent: some processors may not do branch prediction with indirect branches generated by a switch, but they do it with conditional branches generated with if/else. We may add the code to turn a switch with less than 3-4 destinations to a if/else sequence, but I'm not sure if this is really a speed problem in practice. Marcus reported behaviour may be due to different IL code generated by the compiler: I'd like to see the actual IL code to determine what actually caused the performance issue he reported. lupus -- ----------------------------------------------------------------- [EMAIL PROTECTED] debian/rules [EMAIL PROTECTED] Monkeys do it better _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list