Simplifying druntime and phobos by getting rid of "shared static this()" blocks

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Wed May 24 09:40:44 PDT 2017


On 5/24/17 4:49 PM, Steven Schveighoffer wrote:
> On 5/23/17 3:47 PM, Andrei Alexandrescu wrote:
>> https://github.com/dlang/phobos/pull/5421
>>
>> Looking forward to more in the same vein, please contribute! We have 25
>> left in phobos and 12 in druntime. A big one will be making the GC
>> lazily initialize itself. -- Andrei
> 
> So every time I do:
> 
> writeln(...)
> 
> It has to go through a check to see if it's initialized? Using a delegate?

The delegate is not called in the steady state.

> Has the performance of this been tested?

Always a good idea. My test bed:

void main()
{
     import std.stdio;
     foreach (i; 0 .. 10_000_000) writeln("1234567890");
}

On my laptop using dmd, phobos master, best of 21 runs using "time test 
 >/dev/null": 1.371 seconds.

With initOnce: 1.469 seconds. Yuck!

So I added double checking: 
https://github.com/dlang/phobos/pull/5421/commits/6ef3b5a6eacfe82239b7bbc4b0bc9f38adc6fe91

With the double checking: 1.372 seconds. So back to sanity.

Thanks for asking me to measure!


Andrei


More information about the Digitalmars-d mailing list