Here is my code - it is just a basic introduction to parallel computing that was done in class. There was supposed to be a speedup of around 2 for numbers being added up in a random array. All but about four people were getting the correct results. To note, I am using a 2020 MacBook Air with a 1.2Ghz Quad-Core I7.
import java.util.Arrays;
public class TestProgram
{
    public static double addSequential(double\[\] values) //method that adds numbers in an array.
    {
        double sum = 0;
        for(int i=0; i\<values.length; i++)
        sum += values\[i\];
        return sum;
    }
    public static double addParallel(double[] values) //method that adds code to potentially do parallel computing.
    {
        int mid = values.length / 2; //calculates a mid point.
        
        SumArrayTask left = new SumArrayTask(0, mid, values);
        SumArrayTask right = new SumArrayTask(mid, values.length, values);
        
        left.fork();
        right.compute();
        left.join();
        
        return left.getResult() + right.getResult();
        
    }
    
    public static void main(String[] args)
    {
        double[] arr = new double[10]; 
        for(int i = 0; i<arr.length; i++) //create an array with 10 RANDOM values 0-100
            arr[i] = Math.floor(100*Math.random()); //Math.random picks a random # between 0-1, so we multiply by 100.
        System.out.println(Arrays.toString(arr));
        
        long start, sequentialTime, parallelTime;
        
        start = System.nanoTime();
        System.out.println("Result (sequential): " + addSequential(arr)); //Prints out all elements of array added up.
        System.out.println("Time: " + (sequentialTime = System.nanoTime() - start) + " ns"); //Prints how many nanoseconds the processing takes.
        
        start = System.nanoTime();
        System.out.println("Result (parallel): " + addParallel(arr)); //Prints out all elements of array added up with parallel
        System.out.println("Time: " + (parallelTime = System.nanoTime() - start) + " ns"); //Prints how many nanoseconds the parallel processing takes.
        
        System.out.println("Speedup: " + sequentialTime / parallelTime);
    }
}
import java.util.concurrent.RecursiveAction;
public class SumArrayTask extends RecursiveAction
{
private int start;
private int end;
private double[] data;
private double result;
    public SumArrayTask(int startIndex, int endIndex, double[] arr)
    {
        start = startIndex;
        end = endIndex;
        data = arr;
    }
    
    public double getResult() //getter method for result
    {
        return result;
    }
    
    protected void compute()
    {
        double sum = 0;
        for(int i = start; i<end; i++)
            sum += data[i];
        result = sum;
    }
}
My result:
I was expecting a speedup of around 2. I've had others try and they get a completely different result with their pc's. I am completely unsure if it may have something to do with my setup or the code itself. I appreciate any help.

 
     
    