im Versuch die Laufzeit von verschiedenen Programmiersprachen zu vergleichen hab ich versucht, Primzahlen berechnen zu lassen und die Laufzeit des Programms ausgeben zu lassen. Dabei sind mir gravierende Unterschiede aufgefallen:
Ich lasse alle Primzahlen bis 100.000 berechnen. Während C und Java alle Primzahlen innerhalb von 2-3 Sekunden berechnet haben, benötigt Python ca 240 Sekunden.
Worin liegt dieser gravierende Unterschied bzw. gibt es optimimierungen für Python?
Code: Alles auswählen
import time
def isPrime(num):
loop = 2
while num > loop :
if num % loop == 0 and loop != num:
return False
loop += 1
return True
maxNum = 100000
primelist = []
i = 0
end = 0
start = time.time()
for i in range(maxNum):
if isPrime(i):
primelist.append(i)
end = time.time()
for i in primelist:
print(i)
print("Laufzeit: " + str(end - start))
Code: Alles auswählen
import java.util.ArrayList;
import java.util.List;
public class Calc {
public static void main(String[] args) {
int maxNum = 100000;
List<Integer> liste = new ArrayList<Integer>();
long end = 0;
long start = System.nanoTime();
for (int i = 0; i < maxNum; i++) {
if (isPrime(i)) {
liste.add(i);
}
}
end = System.nanoTime();;
for(int num : liste){
System.out.println(num);
}
System.out.println("Laufzeit: " + (double)(end - start)/1000000000);
return;
}
private static boolean isPrime(int num) {
int loop = 2;
while (num > loop) {
if (num % loop == 0 && loop != num) {
return false;
}
loop += 1;
}
return true;
}
}