Hallo,
ich habe zwei Klassen. Die eine berechnet die Quadrate von Zahlen und die andere prüft ob es sich um Primzahlen handelt.
Diese möchte ich nun gerne sequentiell und nebenläufig ausführen. Ich möchte beweisen, dass die nebenläufige Ausführung schneller geht.
Wie mache ich das?
Meine Klasse für die sequentielle Ausführung sieht so aus:
Der Code für die nebenläufige Ausführung:
Die sequentielle Ausführung ist hier schneller als die nebenläufige. Ist das Normal? Was mache ich falsch
ich habe zwei Klassen. Die eine berechnet die Quadrate von Zahlen und die andere prüft ob es sich um Primzahlen handelt.
Diese möchte ich nun gerne sequentiell und nebenläufig ausführen. Ich möchte beweisen, dass die nebenläufige Ausführung schneller geht.
Wie mache ich das?
Meine Klasse für die sequentielle Ausführung sieht so aus:
Code:
public static void main(final String[] args) {
final long start = System.nanoTime();
execute();
final long end = System.nanoTime();
System.out.println("Sequentielle Ausführung: " + (end - start));
}
private static void execute() {
final Square square = new Square();
final Prime prime = new Prime();
final int squareNumber = 100;
final int runs = 500;
for (int i = 0; i < runs; i++) {
for (int j = 0; j < squareNumber; j++) {
square.calc(j);
prime.calc(j);
}
}
}
Der Code für die nebenläufige Ausführung:
Code:
public static void main(final String[] args) {
final long start = System.nanoTime();
execute();
final long end = System.nanoTime();
System.out.println("Nebenläufige Ausführung: " + (end - start));
}
private static void execute() {
final Square square = new Square();
final Prime prime = new Prime();
final int numberOfThreads = 500;
final int squarePerThread = 100;
final Runnable runnable = new Runnable() {
public void run() {
for (int i = 0; i < squarePerThread; i++) {
square.calc(i);
}
}
};
final Runnable primeRun = new Runnable() {
public void run() {
for (int i = 0; i < squarePerThread; i++) {
prime.calc(i);
}
}
};
for (int i = 0; i < numberOfThreads; i++) {
final Thread thread = new Thread(runnable);
final Thread primeT = new Thread(primeRun);
thread.start();
primeT.start();
}
}
Die sequentielle Ausführung ist hier schneller als die nebenläufige. Ist das Normal? Was mache ich falsch