From 15b7a2c715f318aca2dd50e729a063c3a1ca9278 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 27 Jul 2018 14:51:55 -0400 Subject: [PATCH] Revised last sections --- docs/Garbage-Collector-Lazy-Sweeping.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/Garbage-Collector-Lazy-Sweeping.md b/docs/Garbage-Collector-Lazy-Sweeping.md index 0166e608..5549ab55 100644 --- a/docs/Garbage-Collector-Lazy-Sweeping.md +++ b/docs/Garbage-Collector-Lazy-Sweeping.md @@ -209,11 +209,17 @@ Average Speedup | N/A | 10.74% Maximum Speedup | deriv | 36.90% Minimum Speedup | wc | -2.07% -Overall we achieve an average speedup of 10.74% with lazy sweeping. It is interesting that there is such a wide range of performance impacts across the whole benchmark suite. Most likely those benchmarks with the biggest speedups are those that are generating the most garbage. Alternatively, benchmarks such as `wc` are likely generating very little garbage. Case in point, `wc` spends most of its time running in a tight loop that performs few allocations. It is unfortunate that lazy sweeping slightly increases the runtime for some programs but the overall performance improvement more than compensates. +Overall we achieve an average speedup of 10.74% with lazy sweeping, though there is a wide range of performance impacts across the whole benchmark suite. + +Those benchmarks with the biggest speedups are likely those that are generating the most garbage. For example `ack` frequently invokes GC and most of the heap is freed during each GC cycle - this benchmark benefits greatly from lazy sweeping. Alternatively `wc` - which did not realize a speedup - spends most of its time running in a tight loop, invokes GC infrequently, and after a GC cycle there are many live objects left on the heap. # Conclusion -By all accounts lazy sweeping is a great win for Cyclone and has exceeded performance expectations. Though it took some time to integrate lazy sweeping and then re-stabilize the GC code, this opens the possibility to experiment with other larger-scale GC optimizations. +By all accounts lazy sweeping is a great win for Cyclone and has exceeded performance expectations. It is unfortunate that lazy sweeping slightly increases the runtime for some programs but the overall performance improvement more than compensates. + +TODO: how much time? Began work in early March, planning to release in August + +Though it took some time to integrate lazy sweeping and then re-stabilize the GC code, this opens the possibility to experiment with other larger-scale GC optimizations. # References