[Mono-bugs] [Bug 75444][Nor] Changed - [GMCS] bad generic method
instantations performance
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Sun Jul 3 16:03:51 EDT 2005
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by malekith at pld-linux.org.
http://bugzilla.ximian.com/show_bug.cgi?id=75444
--- shadow/75444 2005-07-03 13:28:23.000000000 -0400
+++ shadow/75444.tmp.17380 2005-07-03 16:03:51.000000000 -0400
@@ -250,6 +250,36 @@
------- Additional Comments From malekith at pld-linux.org 2005-07-03 13:28 -------
The full benchmark is here (I failed to attach it to bugzilla):
http://nemerle.org/~malekith/temp/benchmark.tar.gz
It contains the generic and nongeneric version, so one can compare them.
+
+------- Additional Comments From malekith at pld-linux.org 2005-07-03 16:03 -------
+Ha, got it! Mono did always set has_finalize for generic types.
+
+This:
+
+Index: metadata/class.c
+===================================================================
+--- metadata/class.c (revision 46875)
++++ metadata/class.c (working copy)
+@@ -1982,7 +1982,7 @@
+ /* Object::Finalize should have empty implemenatation */
+ class->has_finalize = 0;
+ if (class->parent) {
+- if (class->vtable [finalize_slot] !=
+default_finalize)
++ if (class->vtable [finalize_slot]->token !=
+default_finalize->token)
+ class->has_finalize = 1;
+ }
+
+fixes it, but I think that to be sure, we should also compare dynamic
+modules, not only tokens, so this shouldn't go into main mono tree I
+guess.
+
+Anyway the problem is that we have inflated Finalize copy.
+
+With this patch it takes only 10s for go2 to run, so it's now only 2x
+slower than non-generic version.
+
More information about the mono-bugs
mailing list