For the adventurous: News from the LDC/Linux front

Joseph Rushton Wakeling via Digitalmars-d digitalmars-d at puremagic.com
Sat Jul 12 15:15:14 PDT 2014


On 08/07/14 19:54, David Nadlinger via Digitalmars-d wrote:
> And secondly, proper support for building druntime/Phobos as shared libraries
> and loading D shared objects dynamically has now arrived in LDC! As you might be
> aware, Martin Nowak has spent a considerable amount of effort on adding runtime
> loading capabilities to DMD and druntime during the last year or so. LDC now
> offers the same level of functionality, to a good part based on Martin's solid
> work. To build a copy of LDC with druntime/Phobos as a shared library, which is
> also required for proper runtime loading, simply pass -DBUILD_SHARED_LIBS=ON to
> CMake. Oh, and for now this is Linux-only too, sorry.

So, now that I have this running, I thought I'd give it a go trying out 
hap.random's benchmarks with shared and with static druntime/phobos.

Most of hap.random is pretty standalone apart from reliance on std.range and 
std.traits (and I think that largely for compile-time checks), so, as can be 
expected, most functions are not meaningfully affected by being compiled against 
a shared library.  The handful of functions that depend on std.math seem to take 
a small speed hit that might not be significant.

However, the dice() function, which relies on std.algorithm.reduce, takes a 
substantial speed hit, taking 20% more time to run compared to when the 
benchmarks are compiled against a static phobos.

This is probably within the realm of normalcy, and I guess the speed hit might 
turn out to be smaller on a larger overall timescale/number of calls, but it 
seems a shame (and unexpected, as reduce is obviously templated, so I wouldn't 
expect to have a speed hit because of shared library linkage).  Can anyone 
suggest an explanation?


More information about the Digitalmars-d mailing list