On Wednesday, 18 September 2013 at 13:39:29 UTC, bearophile wrote:
auto centrality = minimallyInitializedArray!(typeof(return))(g.vertexCount);
    centrality[] = T0;
    auto stack = new size_t[g.vertexCount];
    auto sigma = minimallyInitializedArray!T(g.vertexCount);
    sigma[] = T0;
    auto delta = minimallyInitializedArray!T(g.vertexCount);
    delta[] = T0;
    auto d = minimallyInitializedArray!long(g.vertexCount);
    d[] = -1;
    auto q = VertexQueue(g.vertexCount);
    auto p = new Appender!(size_t[])[g.vertexCount];

As an experiment I tried something along these lines -- using uninitializedArray for most of the arrays here and minimallyInitializedArray for p.

It seems to result in a small speed improvement, although I'm not certain about that -- certainly not a speed loss.

On the other hand, if inside the VertexQueue implementation, I replace the "new" declaration with an uninitializedArray call, the code gets slower by a noticeable amount.

Very odd -- any ideas why that might be?

Reply via email to