Implementing and optimizing a simple graph metric

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Thu Sep 26 14:09:30 PDT 2013


On Thursday, 26 September 2013 at 20:56:39 UTC, bearophile wrote:
> Joseph Rushton Wakeling:
>
>> I have not found this -- using minimallyInitializedArray for 
>> the arrays of built-in types is slower than if I use 
>> uninitializedArray.
>
> Then minimallyInitializedArray should be improved :-)

It's odd, because the two actually use the same underlying 
function, with minimallyInitializedArray potentially triggering 
this section:

     else static if(minimallyInitialized && hasIndirections!E)
     {
         ret[] = E.init;
     }

... but if E is (say) an int, or a size_t, or any other built-in 
type, this should not be triggered -- right?

So it's bizarre that there is a performance difference here.

Incidentally, this was why I felt safe using uninitializedArray 
for arrays of e.g. long, size_t, etc., because the only 
difference at the end of the function could be whether the values 
contained in the array have been set or not.  As I do ensure that 
any array entry used also has its value set, it should be OK.


More information about the Digitalmars-d-announce mailing list