static void calculate(PoolAlgorithm alg) { for (int i = min, ii = 0; i <= max; i *= step, ii++) { for (int k = 0; k < numOfTests; k++) { tests[k] = measure(i, alg); } elapsedTime[ii, 2] = Math.Round(calcAvg(tests), 3); } }
static double measure(int numOfElements, PoolAlgorithm alg) { alg.initArr(numOfElements); alg.findBase(); List <int> basePrimes = alg.getBasePrime(); CountdownEvent cnt = new CountdownEvent(basePrimes.Count); sw.Restart(); for (int i = 0; i < basePrimes.Count; i++) { ThreadPool.QueueUserWorkItem(alg.perform, new object[] { basePrimes[i], cnt }); } cnt.Wait(); sw.Stop(); return(sw.Elapsed.TotalMilliseconds + alg.sw.Elapsed.TotalMilliseconds); }