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.


Reply via email to