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

Reply via email to