Hello, > Yeah, Microsoft's JIT lifts invariant bounds-checks. But I believe > it's pretty limited. > > For example, the check is removed in the following case: > > for (int i = 0; i < array.Length; ++i) > sum += array [i]; > > But not here: > > int len = array.Length; > for (int i = 0; i < len; ++i) > sum += array [i]; > > So the first case is (counter-intuitively) faster than the second. > > I don't believe Mono's JIT makes this optimization. Maybe the new JIT > will ;-)
This is a very good observation. Because it seems that this particular kind of loop is detected by the JIT engine. Array-bounds-check elimination is something we want to do with the new JIT, but it is not implemented at this point. The new JIT features a new intermediate representation that simplifies implementing this sort of thing, but it is still on its bootstrapping phases of life. Miguel _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list
