General performance tip about possibly using the GC or not

Jon Degenhardt via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Aug 28 20:46:34 PDT 2017


On Tuesday, 29 August 2017 at 00:52:11 UTC, Cecil Ward wrote:
> I am vacillating - considering breaking a lifetime's C habits 
> and letting the D garbage collector make life wonderful by just 
> cleaning up after me and ruining my future C disciple by not 
> deleting stuff myself.
>
The tsv command line tools I open-sourced haven't any problems 
with GC. They are only one type of app, perhaps better suited to 
GC than other apps, but still, it is a reasonable data point. 
I've done rather extensive benchmarking against similar tools 
written in native languages, mostly C. The D tools were faster, 
often by significant margins. The important part is not that they 
were faster on any particular benchmark, but that they did well 
against a fair variety of tools written by a fair number of 
different programmers, including several standard unix tools. The 
tools were programmed using the standard library where possible, 
without resorting to low-level optimizations.

I don't know if the exercise says anything about GC vs manual 
memory management from the perspective of maximum possible code 
optimization. But, I do think it is suggestive of benefits that 
may occur in more regular programming, in that GC allows you to 
spend more time on other aspects of your program, and less time 
on memory management details.

That said, all the caveats, suggestions, etc. given by others in 
this thread apply to my programs to. GC is hardly a free lunch.

Benchmarks on the tsv utilities: 
https://github.com/eBay/tsv-utils-dlang/blob/master/docs/Performance.md

Blog post describing some of the techniques used: 
https://dlang.org/blog/2017/05/24/faster-command-line-tools-in-d/

--Jon


More information about the Digitalmars-d-learn mailing list