How to initialize an immutable array
Sparsh Mittal
sparsh0mittal at gmail.com
Fri Mar 1 12:19:21 PST 2013
Array is really big!
import std.stdio;
import std.datetime;
import std.parallelism;
import std.range;
//int numberOfWorkers = 2; //for parallel;
double my_abs(double n) { return n > 0 ? n : -n; }
immutable long DIM = 1024L*1024L *128L;
void main()
{
double[] signal = new double[DIM+1];
double temp;
double sample[2]= [4.1,7.2];
for(long i=0L; i< DIM+1; i++)
{
signal[i] = (i+ DIM)%7 + (i+DIM+1)%5; // could be any random
value
}
//auto workerPool = new TaskPool(numberOfWorkers); // for
parallel
StopWatch sw;
sw.start(); //start/resume mesuring.
for (long i=0L; i< DIM; i++)
//foreach(i; workerPool.parallel(iota(0, DIM))) // for parallel
{
temp =
my_abs(sample[0]-signal[i]) +
my_abs(sample[1]-signal[i+1]) ;
}
//workerPool.finish(); // for parallel
sw.stop(); //stop/pause measuring.
writeln(" Total time: ", (sw.peek().msecs/1000), "[sec]");
}
It has both serial and parallel versions. Just comment/uncomment
as per comments.
More information about the Digitalmars-d-learn
mailing list