1 Title: Stats for the basic GC
2 Tags: en, d, dgc, gc, basic, dgcbench, benchmark, statistics
4 Here are some graphs made from my `D GC benchmarks`__ using the Tango__
5 (0.99.8) basic collector, similar to the naive__ ones__ but using histograms
6 for allocations (time and space):
8 __ http://git.llucax.com.ar/w/software/dgc/dgcbench.git
9 __ http://www.dsource.org/projects/tango/
10 __ http://git.llucax.com.ar/w/software/dgc/naive.git
11 __ http://llucax.com.ar/blog/blog/post/37e6cb2a
15 |big_arrays| |rnd_data| |rnd_data_2| |split| |tree|
17 .. |big_arrays| image:: ##POST_URL##/08-stats-for-the-basic-gc/big_arrays.mini.png
18 :target: ##POST_URL##/08-stats-for-the-basic-gc/big_arrays.png
20 .. |rnd_data_2| image:: ##POST_URL##/08-stats-for-the-basic-gc/rnd_data_2.mini.png
21 :target: ##POST_URL##/08-stats-for-the-basic-gc/rnd_data_2.png
23 .. |rnd_data| image:: ##POST_URL##/08-stats-for-the-basic-gc/rnd_data.mini.png
24 :target: ##POST_URL##/08-stats-for-the-basic-gc/rnd_data.png
26 .. |split| image:: ##POST_URL##/08-stats-for-the-basic-gc/split.mini.png
27 :target: ##POST_URL##/08-stats-for-the-basic-gc/split.png
29 .. |tree| image:: ##POST_URL##/08-stats-for-the-basic-gc/tree.mini.png
30 :target: ##POST_URL##/08-stats-for-the-basic-gc/tree.png
34 * The *Wasted* space is the *Uncommitted* space (since the basic GC doesn't
35 track the real size of the stored object).
36 * The *Stop-the-world* time is the time all the threads are stopped, which is
37 almost the same as the time spent scanning the heap.
38 * The *Collect* time is the total time spent in a collection. The
39 difference with the *Stop-the-world* time is almost the same as the time
40 spent in the sweep phase, which is done after the threads have being resumed
41 (except the thread that triggered the collection).
43 There are a few observations to do about the results:
45 * The *stop the world* time varies a lot. There are tests where is almost
46 unnoticeable (``tree``), tests where it's almost equals to the total
47 collection time (``rnd_data``, ``rnd_data_2``, ``split``) and test where it's
48 in the middle (``big_arrays``). I can't see a pattern though (like heap
50 * There are tests where it seems that collections are triggered for no reason;
51 there is plenty of free space when it's triggered (``tree`` and
52 ``big_arrays``). I haven't investigated this yet, so if you can see
53 a reason, please let me know.
56 .. vim: set et sw=4 sts=4 :