Click here to Skip to main content
15,941,615 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
Serial and Parallel Percentage of Code
Problem Description
Every time project violates an SLA, the project leader interrogates the developer for finding root cause. Typical developer responds by saying that the Server needs more CPU for the code to run fast. Many a times, despite adding more CPUs the code does not scale. The project leader knows that code will scale with addition of CPUs only if code has parallelism. Help Project leader find serial and parallel percentage of the code, given number of CPUs and job completion times

Constraints
Output should be upto 2 decimal places

Input Format
The first line contains 1st measurement in format [Number_of_CPUs Job_completion_time].

The second line contains 2nd measurement in format [Number_of_CPUs Job_completion_time]

Output
percentage of serial code percentage of parallel code in format [%_Serial_Code %_Parallel_Code]


Explanation
Example 1

Input

1 100

4 100

Output

100.00 0.00

Example 2

Input

2 100

4 50

Output

33.33 66.67

What I have tried:

Java
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();
        }
    }
}
Posted
Updated 3-Aug-18 11:10am
v2

We do not do your homework: it is set for a reason. It is there so that you think about what you have been told, and try to understand it. It is also there so that your tutor can identify areas where you are weak, and focus more attention on remedial action.

Try it yourself, you may find it is not as difficult as you think!

If you meet a specific problem, then please ask about that and we will do our best to help. But we aren't going to do it all for you!
 
Share this answer
 
This look like a challenge, in this kind of challenges, the goal is to test your skills. So your answer is that you are unable to solve the problem.

In this kind of problem, just like with homework, the first step is to find the logic, the mathematics.
So take a sheet of paper and a pencil and solve the samples by hand. When you got it, start writing the program.


We do not do your HomeWork.
HomeWork is not set to test your skills at begging other people to do your work, it is set to make you think and to help your teacher to check your understanding of the courses you have taken and also the problems you have at applying them.
Any failure of you will help your teacher spot your weaknesses and set remedial actions.
Any failure of you will help you to learn what works and what don't, it is called 'trial and error' learning.
So, give it a try, reread your lessons and start working. If you are stuck on a specific problem, show your code and explain this exact problem, we might help.

As programmer, your job is to create algorithms that solve specific problems and you can't rely on someone else to eternally do it for you, so there is a time where you will have to learn how to. And the sooner, the better.
When you just ask for the solution, it is like trying to learn to drive a car by having someone else training.
Creating an algorithm is basically finding the maths and make necessary adaptation to fit your actual problem.

[Update]
The code in your question is not even remotely related to the statement.
Quote:
can anyone explain how output comes??

That is the core of the contest, they want to know if you can workout the math. So if we just give you the answer it is sheeting.
The principle of problem solving is :
First step: take a sheet of paper and a pencil
Second step: solve the problem by hand, find the maths or algorithm
Third step: your program is automating the solution you found.
 
Share this answer
 
v5

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900