On 05/05/2014 02:38 PM, Kapps wrote:

> I think that the GC actually blocks when
> creating objects, and thus multiple threads creating instances would not
> provide a significant speedup, possibly even a slowdown.

Wow! That is the case. :)

> You'd want to benchmark this to be certain it helps.

I did:

import std.range;
import std.parallelism;

class C
{}

void foo()
{
    auto c = new C;
}

void main(string[] args)
{
    enum totalElements = 10_000_000;

    if (args.length > 1) {
        foreach (i; iota(totalElements).parallel) {
            foo();
        }

    } else {
        foreach (i; iota(totalElements)) {
            foo();
        }
    }
}

Typical run on my system for "-O -noboundscheck -inline":

$ time ./deneme parallel

real    0m4.236s
user    0m4.325s
sys     0m9.795s

$ time ./deneme

real    0m0.753s
user    0m0.748s
sys     0m0.003s

Ali


Reply via email to