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