Ok, so why in std.parallelism examples are this :

// Same thing, but use the default work unit size.
    //
    // Timings on an Athlon 64 X2 dual core machine:
    //
    // Parallel foreach:  388 milliseconds
    // Regular foreach:   619 milliseconds
    foreach(i, ref elem; taskPool.parallel(logs)) {
        elem = log(i + 1.0);
    }

Plus, a change my code to make that for same elem, calc log 100000 times in 
each loop, and now I get  parallel foreach get a bit shorter time that normal 
foreach....
Change code :

  auto logs = new double[200];
                const num = 2;

                clock_t clk;
                double norm;
                double par;

                writeln("CPUs : ",totalCPUs );
foreach (t; 0..num) {

            foreach(i, ref elem; logs) {
                foreach(p; 0..100_000)
                elem = log(i + 1.0);
            }
                }
                norm = clock() -clk;

                clk = clock();
                foreach (t; 0..num) {

            foreach(i, ref elem; taskPool.parallel(logs, 100)) {
                foreach(p; 0..100_000)
                elem = log(i + 1.0);
            }

    }

New times : Normal : 12.725 Parallel : 12.499

Reply via email to