0 is not a power of 2

via Digitalmars-d digitalmars-d at puremagic.com
Wed May 20 03:47:36 PDT 2015


On Wednesday, 20 May 2015 at 09:49:06 UTC, Temtaime wrote:
> First version isn't any slow. It's clear and can be optimized 
> with gdc:
>
> http://goo.gl/Q7HKcU

Yes, and besides, if one cares about these minor performance 
issues, that most likely will disappear in the pipeline if you 
are a little bit careful about how you arrange your code, then 
one one would be better off letting the compiler take advantage 
of statically available information about size:

@always_inline
... allocate(ulong size){
    if(size==0) return _my_alloc_zero();
    if(is_log2_or_zero(size)) return _my_alloc_log2size(size);
    return _my_alloc_nonlog2size(size);
  }

So basically a version that preserves the tests that the compiler 
most easily can get rid of can lead to faster code even if it in 
isolation has a few extra instructions.


More information about the Digitalmars-d mailing list