http://d.puremagic.com/issues/show_bug.cgi?id=3463



--- Comment #45 from Leandro Lucarella <llu...@gmail.com> 2010-07-24 20:08:30 
PDT ---
Well, I've made a little benchmark for the patch.

I'm using the voronoi[1] benchmark, since I think is a good GC benchmark,
because it exercises the GC a lot, but it does real work with the data (unlike
the typical "tree" benchmark). I find it particularly interesting too because
it seems to have a lot of false positives, making the runtime very bound to the
addresses returned by mmap(), as shown in the post[2] mentioned earlier in this
comments. This benchmarks confirmed that the high variance in runtime presented
by this test is due to false positives.

[1] http://codepad.org/xGDCS3KO
[2] http://www.llucax.com.ar/blog/blog/post/-7a56a111

I've compared 3 binaries, one compiled without any of this patches
(voronoi-dnp-tnp, i.e. Dmd Not Precise, to be honest, this is DMD 1.062
distributed by DigitalMars), one compiled with a patched DMD, but unpatched
Tango to see if the PointerMaps created by the compiler has any effect on
performance (voronoi-dp-tnp) and one compiled with both patched DMD and Tango
(voronoi-dp-tp). Patched DMD is svn r580 (D1 branch), Tango is svn trunk r5505,
and the patches are not the latest ones, are the previous (sorry, I was working
on this before you came up with the new patch, I'll try the new patch when I
have some time).

Anyway, here are the result:
$ for i in {1..10}; do /usr/bin/time -f%e ./voronoi-dnp-tnp -n 30000; done
3.88
3.71
4.28
3.89
3.78
3.63
3.81
4.36
3.82
3.89

min  = 3.63
mean = 3.905, std = 0.234343053378
max  = 4.36

$ for i in {1..10}; do /usr/bin/time -f%e ./voronoi-dp-tnp -n 30000; done
3.74
3.87
3.69
3.91
4.33
4.07
4.26
4.08
3.78
4.32

min  = 3.69
mean = 4.005, std = 0.241994031148
max  = 4.33

$ for i in {1..10}; do /usr/bin/time -f%e ./voronoi-dp-tp -n 30000; done
4.05
4.03
4.04
4.03
4.02
4.02
4.02
4.02
4.02
4.05

min  = 4.02
mean = 4.03, std = 0.0124721912892
max  = 4.05

The differences between the patched an unpatched DMD doesn't look relevant,
specially taking into account the high variance and that they are not even the
same DMD version.

Unfortunately the patched GC fall a little (~3%) behind the unpatched one,
mean-wise, and a little more if we look at the min (about 10%), but the max
drops about the same (~7%) and the variance drops dramatically (~240%) with the
patched GC. Considering the precise scanning patch is the first try, and not
very optimized, it looks like a tradeoff that worth paying while trying to
improve this timings.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to