Linking with a non-default druntime
    Per Nordlöw 
    per.nordlow at gmail.com
       
    Tue Oct  9 11:18:58 UTC 2018
    
    
  
On Tuesday, 2 October 2018 at 13:07:04 UTC, Basile B. wrote:
> On Monday, 1 October 2018 at 11:10:07 UTC, Per Nordlöw wrote:
>> On Monday, 1 October 2018 at 08:27:54 UTC, Basile B. wrote:
>>> I think so. Apparently it's registered with a string, e.g 
>>> "manual" and you pass a special druntime option with your 
>>> program to select.
>>> Actually i would be interested to make the interface with 
>>> assignable handlers since you don't seem to be very hot. 
>>> Maybe tomorrow i can try. I'm almost sure that this could 
>>> work but cant be 100% sure. Maybe there'll be issues with 
>>> privacy and events to assign.
>>
>> Be my guest :)
>>
>> Thanks!
>
> I see other related topics, did you already start something ?
Yes!
I'm making interesting progress here:
https://github.com/nordlow/druntime/blob/fastalloc-gc/src/gc/impl/fastalloc/gc.d
I'm currently writing the spec in a comment and experimenting 
with faster (both global and thread-local) allocations
using
https://github.com/nordlow/phobos-next/blob/master/snippets/gctester.d
as a benchmark, compiled with
https://github.com/nordlow/scripts/blob/master/dmd-own
which gives
[per:~/Work/knet/phobos-next/snippets] 12s $ dmd-own gctester.d 
--DRT-gcopt=gc:fastalloc
  size new-C new-S GC.malloc gc_tlmalloc_N GC.calloc malloc calloc 
FreeList!(GCAllocator)
     8  46.8  58.3    26.0        7.5        23.8     31.2   31.3  
  29.1
    16  33.6  23.1    12.7        4.7        13.0     16.5   14.9  
  16.0
    32  15.5  13.5     6.7        2.9         7.0      8.2   10.2  
   9.6
    64  11.5   9.7     4.1        1.8         3.9      6.4    5.2  
   4.8
   128   9.3   6.9     2.6        1.6         2.5      4.2    3.8  
   3.0
   256   8.8   5.4     1.9        1.4         1.9      3.2    2.9  
   2.2
   512   7.6   4.3     1.6        1.3         1.5      2.6    2.8  
   1.7
  1024   7.3   4.1     1.5        1.3         1.4      2.2    2.5  
   1.5
   ns/w: nanoseconds per word
vs
[per:~/Work/knet/phobos-next/snippets] 4s $ dmd-own gctester.d 
--DRT-gcopt=gc:conservative
  size new-C new-S GC.malloc gc_tlmalloc_N GC.calloc malloc calloc 
FreeList!(GCAllocator)
     8  75.4  54.7    39.1        8.9        42.1     28.8   32.1  
  39.6
    16  32.0  27.5    18.6        4.6        20.9     15.2   17.0  
  20.1
    32  15.7  16.0    10.5        2.9        12.3      9.0   10.7  
  11.0
    64  10.2   9.0     7.7        1.9         6.2      5.3    6.3  
   6.6
   128   7.9   6.0     5.0        1.5         4.2      4.5    3.8  
   4.8
   256   6.1   4.7     2.9        1.3         3.4      3.2    2.9  
   3.6
   512   5.6   3.5     3.0        1.3         3.0      2.6    2.8  
   2.8
  1024   5.0   2.9     2.5        1.2         2.6      2.3    2.5  
   2.5
   ns/w: nanoseconds per word
Note that gc_tlmalloc_N uses the new allocator in both cases. I 
haven't bothered branching the benchmark on type of GC config.
I'm planning on making it sweep-free as described in
https://github.com/golang/proposal/blob/master/design/12800-sweep-free-alloc.md
    
    
More information about the Digitalmars-d-learn
mailing list