Member 13936705 Ответов: 2

Я хочу решения этой проблемы


Последовательный и параллельный процент кода
описание проблемы
Каждый раз, когда проект нарушает 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();
        }
    }
}

2 Ответов

Рейтинг:
13

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
1

Patrice T

Это выглядит как вызов, в такого рода вызовах цель состоит в том, чтобы проверить свои навыки. Таким образом, ваш ответ заключается в том, что вы не в состоянии решить эту проблему.

В такого рода задачах, как и в домашних заданиях, первым шагом является поиск логики, математики.
Поэтому возьмите лист бумаги и карандаш и решите образцы вручную. Когда вы его получите, начните писать программу.


Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это похоже на попытку научиться водить машину, обучая кого-то другого.
Создание алгоритма - это в основном поиск математики и необходимая адаптация к вашей реальной проблеме.

[Обновление]
Код в вашем вопросе даже отдаленно не связан с этим утверждением.

Цитата:
может ли кто-нибудь объяснить, как приходит результат??

Это и есть суть конкурса, они хотят знать, можете ли вы тренировать математику. Так что если мы просто дадим вам ответ, то это будет листовая пленка.
Принцип решения проблемы таков :
Первый шаг: возьмите лист бумаги и карандаш
Второй шаг: решите задачу вручную, найдите математику или алгоритм
Третий шаг: ваша программа автоматизирует решение, которое вы нашли.