2 Tags: en, d, dgc, naive, gc, statistics, graph, collection, benchmark, dgcbench
4 It's been exactly 3 months since the last post. I spent the last months writing
5 my `thesis document (in Spanish)`__, working, and being unproductive because of
6 the lack of inspiration =)
8 __ http://git.llucax.com.ar/w/z.facultad/75.00/informe.git
10 But in the last couple of days I decided to go back to the code, and finish the
11 statistics gathering in the `Naive GC`__ (the new code is not published yet
12 because it needs some polishing). Here are some nice graphs from my
13 little `D GC benchmark`__:
15 __ http://git.llucax.com.ar/w/software/dgc/naive.git
16 __ http://git.llucax.com.ar/w/software/dgc/dgcbench.git
20 |big_arrays| |rnd_data| |rnd_data_2| |shootout_binarytrees|
21 |split| |startup| |tree|
23 .. |big_arrays| image:: ##POST_URL##/graphs/big_arrays.c.mini.png
24 :target: ##POST_URL##/graphs/big_arrays.c.png
26 .. |rnd_data_2| image:: ##POST_URL##/graphs/rnd_data_2.c.mini.png
27 :target: ##POST_URL##/graphs/rnd_data_2.c.png
29 .. |rnd_data| image:: ##POST_URL##/graphs/rnd_data.c.mini.png
30 :target: ##POST_URL##/graphs/rnd_data.c.png
32 .. |shootout_binarytrees| image:: ##POST_URL##/graphs/shootout_binarytrees.c.mini.png
33 :target: ##POST_URL##/graphs/shootout_binarytrees.c.png
35 .. |split| image:: ##POST_URL##/graphs/split.c.mini.png
36 :target: ##POST_URL##/graphs/split.c.png
38 .. |startup| image:: ##POST_URL##/graphs/startup.c.mini.png
39 :target: ##POST_URL##/graphs/startup.c.png
41 .. |tree| image:: ##POST_URL##/graphs/tree.c.mini.png
42 :target: ##POST_URL##/graphs/tree.c.png
44 The graphs shows the space and time costs for each collection in the programs
45 life. The collection time is divided in the time spent in the ``malloc()`` that
46 triggered the collection, the time spent in the collection itself, and the time
47 the world has to be stopped (meaning the time all the threads were paused
48 because of the collection). The space is measured before and after the
49 collection, and the total memory consumed by the program is divided in 4 areas:
50 used space, free space, wasted space (space that the user can't use but it's
51 not used by the collector either) and overhead (space used by the collector
54 As you can see, the *naive* collector pretty much sucks, specially for periods
55 of lots of allocation (since it just allocated what it's asked in the
56 ``gc_malloc()`` call if the collection failed).
58 The next step is to modify the Tango__\ 's *Basic* collector to gather the same
59 data and see how things are going with it.
61 __ http://www.dsource.org/projects/tango/
63 .. vim: set et sw=4 sts=4 :