Ich wollte mal testen, wie viel Zeitverlust ein else continue; in einer for-Schleife mit sich bringt.
Ich habe dazu folgendes Programm geschrieben:
Meistens ist die Schleife ohne else continue; um ca. eine halbe Sekunde also um 50-60% schneller als die mit.
Nur bin ich mir nicht ganz sicher, ob das alles stimmt.
Ich meine, 50-60% ist schon richtig viel - nur dafür, dass die Schleife sowieso das tut was sie auch sonst täte, oder?
Drum wollte ich hier noch mal ein paar Profis drüberschauen lassen, ob das alles stimmt und ob damit auch mein Ergebnis stimmt.
Danke schonmal im Voraus.
Ich habe dazu folgendes Programm geschrieben:
Java:
package programs;
import java.time.Duration;
import java.time.Instant;
public class LaufzeitTest {
public static void main(String[] args){
int a = 0, b = 0;
int limit = 2_000_000_000;
Instant i1 = Instant.now();
for(int i=0; i < limit; i++){
if(i%2 == 0) a++;
else continue;
}
Instant i2 = Instant.now();
a = 0;
Instant i3 = Instant.now();
for (int i=0; i < limit; i++) {
if(i%2 == 0) a++;
}
Instant i4 = Instant.now();
Duration dur1 = Duration.between(i1, i2);
Duration dur2 = Duration.between(i3, i4);
double d1 = Double.parseDouble(dur1.toString().substring(3, dur1.toString().length()-1));
double d2 = Double.parseDouble(dur2.toString().substring(3, dur2.toString().length()-1));
System.out.printf("Mit \"else continue;\": %fs%nOhne \"else continue;\": %fs%nDifferenz: %fs%n =>Um %f%% schneller!", d1, d2, d2-d1, (d2-d1)/d2*100);
}
}
Meistens ist die Schleife ohne else continue; um ca. eine halbe Sekunde also um 50-60% schneller als die mit.
Nur bin ich mir nicht ganz sicher, ob das alles stimmt.
Ich meine, 50-60% ist schon richtig viel - nur dafür, dass die Schleife sowieso das tut was sie auch sonst täte, oder?
Drum wollte ich hier noch mal ein paar Profis drüberschauen lassen, ob das alles stimmt und ob damit auch mein Ergebnis stimmt.
Danke schonmal im Voraus.