https://bugzilla.novell.com/show_bug.cgi?id=325495#c8
--- Comment #8 from Paolo Molaro <[EMAIL PROTECTED]> 2007-10-03 05:50:43 MST --- I implemented the interface offset sharing in my tree: this provides huge memory savings (600-700+ KB of corlib metadata alone for ironpython/monodevelop plus about the same in other memory allocations) and speedups even for the case where we end up implementing all the needed interfaces (the ones the current svn code misses). This is still not enough to run the anonarray.cs test case because there is one more type involved that would need to have about the same characteristics re implicit interfaces as the arrays: InternalEnumerator<T> in System.Array. This is the type of the object that is created when GetEnumerator<T> is called. Now the twist is this: given a string[] array A you can end up calling GetEnumerator<T> on it in several different ways, depending on how many IEnumerable<T> interfaces the array exposes (which we know can be huge). With the interface offsets sharing, we end up creating a single GetEnumerator<string[]> method which returns an object which doesn't implement, for example, IEnumerator<IEnumerable<string>>. One solution to this problem is to not share offsets for the IEnumerable<T> interfaces of arrays, but this reintroduces (even if to a lesser extent) the explosive growth in memory usage and complexity. The other solution is to do the same sharing and implicit interface implementations we do on arrays also on InternalEnumerator<T>. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
