On Thursday, 14 February 2013 at 00:25:15 UTC, FG wrote:
On 2013-02-14 01:09, Rob T wrote:
You can check if disabling the GC just before the insert process improves the performance. You may see 3x performance improvement. Disabling is safe provided you re-enable, this can be done reliably with scope(exit) or something similar.

How did you know? It was 3x in my case. :)
Well, even more but the program had to wait 2 seconds at the end to collect. With LIMIT at 10M, g++: 5.0s, gdc: 27.0s and 8.7s with GC.disable. Internal memory handling by containers - yeah, can't wait to see that happen!

Oh yes, I forgot to mention you can expect ~2 second additional delay from re-enabling the CG.

How did I know? Read this ...
http://forum.dlang.org/thread/waarzqtfcxuzhzdel...@forum.dlang.org

So it seems that we can get close to g++ performance with some manual tweaking of the GC, which is good, but you have to know this and know where to make the adjustments.

What we really need is a better GC with manual fine tuning control over how it operates, with an ability to gain feed back from it to understand where and when it may be doing something stupid, and even better than that is if we could use D completely without the GC, which may be a requirement for certain types of applications. Unfortunately, a certain subset of D depends on there being a method of automated garbage collection in place, so currently you cannot use all of D without a GC.

--rt

Reply via email to