A few notes on choosing between Go and D for a quick project
via Digitalmars-d
digitalmars-d at puremagic.com
Fri Mar 20 03:50:49 PDT 2015
On Thursday, 19 March 2015 at 17:40:46 UTC, weaselcat wrote:
> On Thursday, 19 March 2015 at 16:59:36 UTC, Ola Fosheim Grøstad
>> If the code/compiler generates suboptimal code in the first
>> place then improvements can be somewhat random. But if you
>> write code with good cache locality, filling the pipeline
>> properly then there is no alternative to going low level.
>>
>> Btw, take a look at this:
>> http://stackoverflow.com/questions/28922323/improving-line-wise-i-o-operations-in-d
>>
>> That's really bad marketing...
[…]
> ldc -O5 -inline -release -boundscheck=off wc.d
> time ./wc enwiki-latest-pages-articles1.xml-p000000010p000010000
> There are 1245473 lines.
> ./wc enwiki-latest-pages-articles1.xml-p000000010p000010000
> 0.04s user 0.08s system 98% cpu 0.125 total
>
>
> ahem
>>> I actually found that LDC does an _amazing_ job of optimizing
>>> high level constructs and converting "low level" code to
I think you missed my point here. A simple loop like this should
result in similar execution times for all AoT languages with
decent library support and optimisation because it ought to be
bandwidth limited, not CPU limited. The issue here is that when
decent programmers end up asking for help on stackoverflow it
exposes underlying library/compiler/language issues that needs
addressing on way or another.
When it comes to more complicated algorithms then it usually
impossible for a high level construct to match a low level one
for several reasons, a major one being that you need to tailor
the algorithm to OS/caches/ALU/CPU. Pure high level code cannot
easily be reduced to high quality iterative algorithms that match
the hardware.
High level constructs may be cleaner if done right, and
sometimes saves programmer time, but it will never be as fast on
the standard CPU architectures we have today. The hardware
favours carefully planned iterative, imperative approaches. That
was true before SIMD and caching, and it is even more true now.
Try to do some signal processing and you'll quickly learn that
high level code is out of the question if you want high
performance.
More information about the Digitalmars-d
mailing list