[m-rev.] diff: disable GC during startup
Peter Wang
novalazy at gmail.com
Thu May 5 15:57:49 AEST 2011
[On my machine, this reduced the run time of an empty Mercury program in
the hlc.gc grade from 2.7 ms to 1.1 ms. The equivalent C program takes
0.26 ms. The Mercury libraries were statically linked. Measured with a
simple C program which does fork/exec/wait in a loop to avoid shell
overhead. CPU frequency scaling was disabled.]
Branches: main
Disable garbage collection during early runtime initialisation, when little or
no garbage is created anyway.
runtime/mercury_wrapper.c:
As above.
diff --git a/runtime/mercury_wrapper.c b/runtime/mercury_wrapper.c
index 1558f57..3972160 100644
--- a/runtime/mercury_wrapper.c
+++ b/runtime/mercury_wrapper.c
@@ -581,6 +581,10 @@ mercury_runtime_init(int argc, char **argv)
MR_setup_signals();
#endif
+#ifdef MR_BOEHM_GC
+ /* Disable GC during startup, when little or no garbage is created. */
+ GC_disable();
+#endif
#ifdef MR_CONSERVATIVE_GC
MR_init_conservative_GC();
#endif
@@ -705,6 +709,10 @@ mercury_runtime_init(int argc, char **argv)
#endif /* ! MR_LL_PARALLEL_CONJ */
#endif /* ! 0 */
+#ifdef MR_BOEHM_GC
+ GC_enable();
+#endif
+
if (MR_memdebug) {
MR_debug_memory(stderr);
}
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list