import java.util.concurrent.ExecutionException;

public class Benchmark {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        int[] sizes = {5, 7, 10};

        for (int size : sizes) {
            int[][] matrix = MatrixGenerator.generateMatrix(size);

            // Последовательное вычисление
            long startSequential = System.nanoTime();
            double detSequential = DeterminantCalculator.calculateDeterminant(matrix, 1);
            long endSequential = System.nanoTime();
            System.out.println("Последовательно (" + size + "x" + size + "): " + (endSequential - startSequential) / 1_000_000 + " ms, детерминант: " + detSequential);

            // Параллельное вычисление
            for (int numThreads : new int[]{2, 4, 8}) {
                long startParallel = System.nanoTime();
                double detParallel = DeterminantCalculator.calculateDeterminant(matrix, numThreads);
                long endParallel = System.nanoTime();
                System.out.println("Параллельно (" + size + "x" + size + ", " + numThreads + " потоков): " +
                        (endParallel - startParallel) / 1_000_000 + " ms, детерминант: " + detParallel);
            }
            System.out.println("--------------------------------------------------");
        }
    }
}