Я хочу решения этой проблемы
Последовательный и параллельный процент кода
описание проблемы
Каждый раз, когда проект нарушает SLA, руководитель проекта опрашивает разработчика для поиска первопричины. Типичный разработчик отвечает, что серверу требуется больше процессора для быстрого выполнения кода. Много раз, несмотря на добавление большего количества процессоров, код не масштабируется. Руководитель проекта знает, что код будет масштабироваться с добавлением процессоров только в том случае, если код имеет параллелизм. Помогите руководителю проекта найти последовательный и параллельный процент кода, заданное количество процессоров и время завершения задания
Ограничения
Вывод должен быть до 2 знаков после запятой
входной формат
Первая строка содержит 1-е измерение в формате [Number_of_CPUs Job_completion_time].
Вторая строка содержит 2-е измерение в формате [Number_of_CPUs Job_completion_time]
Выход
процент последовательного кода процент параллельного кода в формате [%_Serial_Code %_Parallel_Code]
Объяснение
Пример 1
Ввод
1 100
4 100
Выход
100.00 0.00
Пример 2
Ввод
2 100
4 50
Выход
33.33 66.67
Что я уже пробовал:
import java.util.Arrays; public class ParallelSortTest { private static final int BASE_ARRAY_SIZE = 10000; // A utility function to generate and return an // an array of given size filled with randomly // generated elements. public static double[] generateArray(int size) { if (size <= 0 || size > Integer.MAX_VALUE) return null; double[] result = new double[size]; for (int i = 0; i < size; i++) result[i] = Math.random(); return result; } // Driver code to compare two sortings public static void main(String[] args) { for (int i = 1; i < 10000; i *= 10) { int size = BASE_ARRAY_SIZE * i; double[] arr1 = generateArray(size); // Creating a copy of arr1 so that we can // use same content for both sortings. double[] arr2 = Arrays.copyOf(arr1, arr1.length); System.out.println("Array Size: " + size); // Sorting arr1[] using serial sort long startTime = System.currentTimeMillis(); Arrays.sort(arr1); long endTime = System.currentTimeMillis(); System.out.println("Time take in serial: " + (endTime - startTime) + "ms."); // Sorting arr2[] using serial sort startTime = System.currentTimeMillis(); Arrays.parallelSort(arr2); endTime = System.currentTimeMillis(); System.out.println("Time take in parallel: " + (endTime - startTime) + "ms."); System.out.println(); } } }