[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 12:02:28 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-02 19:50:55.000000000 -0400
+++ shadow/75444.tmp.15882	2005-07-03 12:02:28.000000000 -0400
@@ -183,6 +183,66 @@
 7076      0.3929  mono_burg_label_priv
 7037      0.3908  mono_marshal_get_runtime_invoke
 7033      0.3905  GC_find_header
 5855      0.3251  mono_runtime_class_init
 5807      0.3225  EnterCriticalSection
 
+
+------- Additional Comments From malekith at pld-linux.org  2005-07-03 12:02 -------
+The output above was after the change, for nemerle compiler compiling
+the standard library. I have however found the results to be somewhat
+bogus, for instance it reported mono to sit in g_error in
+mono_type_stack_size(), which clearly wasn't the case.
+
+Lupus suggested I use --profile=default:stat and it seems to work. One
+interesting thing I noticed is finalization. We do not have any
+Finalize methods, and I don't think we use much of objects with
+Finalize from the BCL. Indeed in the nongeneric compiler version first
+entry about finalization is at 0.12%. However in the generic version:
+
+prof counts: total/unmanaged: 18792/17154
+   5158 27.45 % /home/users/malekith/mono-svn/bin/mono(GC_mark_from
+   1483  7.89 % /home/users/malekith/mono-svn/bin/mono(GC_finalize
+    587  3.12 % /usr/lib64/libglib-2.0.so.0(g_hash_table_insert
+    486  2.59 % /home/users/malekith/mono-svn/bin/mono(GC_find_header
+    367  1.95 % /usr/lib64/libglib-2.0.so.0
+    351  1.87 %
+/home/users/malekith/mono-svn/bin/mono(GC_register_finalizer_inner
+    336  1.79 % /usr/lib64/libglib-2.0.so.0(g_hash_table_lookup
+    331  1.76 % /lib64/tls/libc.so.6
+    268  1.43 % /lib64/tls/libpthread.so.0
+    266  1.42 % /home/users/malekith/mono-svn/bin/mono(GC_reclaim_clear
+    239  1.27 % /lib64/tls/libc.so.6(calloc
+    232  1.23 %
+/home/users/malekith/mono-svn/bin/mono(mono_arch_local_regalloc
+    221  1.18 %
+/home/users/malekith/mono-svn/bin/mono(mono_generic_inst_equal
+    215  1.14 % /lib64/tls/libc.so.6(memset
+    214  1.14 % /lib64/tls/libpthread.so.0(__pthread_mutex_lock
+    211  1.12 %
+/home/users/malekith/mono-svn/bin/mono(do_mono_metadata_type_equal
+    200  1.06 % /home/users/malekith/mono-svn/bin/mono(GC_base
+    176  0.94 %
+/home/users/malekith/mono-svn/bin/mono(mono_burg_label_priv
+    156  0.83 % /home/users/malekith/mono-svn/bin/mono(GC_is_marked
+    152  0.81 %
+/home/users/malekith/mono-svn/bin/mono(_mono_metadata_generic_class_equal
+    136  0.72 % /home/users/malekith/mono-svn/bin/mono(mono_method_to_ir
+    135  0.72 % /home/users/malekith/mono-svn/bin/mono(GC_local_gcj_malloc
+    131  0.70 %
+/home/users/malekith/mono-svn/bin/mono(mono_metadata_generic_param_equal
+    120  0.64 %
+/home/users/malekith/mono-svn/bin/mono(mono_object_new_alloc_specific
+    109  0.58 %
+/home/users/malekith/mono-svn/bin/mono(mono_metadata_decode_row
+    105  0.56 %
+/home/users/malekith/mono-svn/bin/mono(mono_arch_output_basic_block
+     93  0.49 % /lib64/tls/libc.so.6(__libc_free
+
+(this is all after my change).
+
+GC_mark_from was 24% in the non generic version, but it is 5x faster,
+therefore it seems to take more time. Maybe because of finalizers.
+The generic version allocates 170M (non generic 140M, this is strange,
+the generic version doesn't box anything, so it should allocate less,
+maybe it's some runtime issue).
+


More information about the mono-bugs mailing list