Perfomance im Vergleich zu C++
Verfasst: Sonntag 5. August 2012, 17:04
Hallo,
ich war vorher eher im Bereich C++/Java unterwegs, muss und möchte nun für ein Praktikum aber auch mal Python lernen.
Dazu habe ich mir mal wieder die Fragen aus dem Project Euler rausgesucht, da ich damit in der Vergangenheit neue Sprachen sehr schnell lernen konnte.
Dass Python in der Geschwindigkeit nicht an manche andere Sprachen rankommt, hatte ich eh erwartet und das ist ja auch nicht schlimm, nur leider hab ich es so extrem nicht erwartet.
Nun konkret eine sehr einfache Aufgabe von Project Euler: "What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?"
Der Algo wurde in beiden Sprachen identisch umgesetzt. Er ist natürlich an sich nicht der schnellste, aber darum geht es nicht. Mit Python dauert er ganze 13.13 Sekunden, mit C++ (gcc) nur 0.12 Sekunden, mit eingeschalteter Optimierung kompiliert nur 0.08.
Puh, dachte ich mir, das ist ein gewaltiger Unterschied.
Meine Frage: Ist das nur ein sehr unglückliches Beispiel für Python oder ist das die Regel? Liefert Python noch Optimierungsmöglichkeiten? (ohne den Algo zu ändern, sonst ist es ja nicht mehr vergleichbar)
Hier noch die Codes:
ich war vorher eher im Bereich C++/Java unterwegs, muss und möchte nun für ein Praktikum aber auch mal Python lernen.
Dazu habe ich mir mal wieder die Fragen aus dem Project Euler rausgesucht, da ich damit in der Vergangenheit neue Sprachen sehr schnell lernen konnte.
Dass Python in der Geschwindigkeit nicht an manche andere Sprachen rankommt, hatte ich eh erwartet und das ist ja auch nicht schlimm, nur leider hab ich es so extrem nicht erwartet.
Nun konkret eine sehr einfache Aufgabe von Project Euler: "What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?"
Der Algo wurde in beiden Sprachen identisch umgesetzt. Er ist natürlich an sich nicht der schnellste, aber darum geht es nicht. Mit Python dauert er ganze 13.13 Sekunden, mit C++ (gcc) nur 0.12 Sekunden, mit eingeschalteter Optimierung kompiliert nur 0.08.
Puh, dachte ich mir, das ist ein gewaltiger Unterschied.
Meine Frage: Ist das nur ein sehr unglückliches Beispiel für Python oder ist das die Regel? Liefert Python noch Optimierungsmöglichkeiten? (ohne den Algo zu ändern, sonst ist es ja nicht mehr vergleichbar)
Hier noch die Codes:
Code: Alles auswählen
number = 20
while True:
smallest = True
for factor in range(11,21):
if number%factor!=0:
smallest = False
break
if smallest:
print(number)
break
number+=20
Code: Alles auswählen
#include <iostream>
using namespace std;
int main()
{
bool smallest;
unsigned int factor;
unsigned int number = 20;
while(true)
{
smallest = true;
for(factor=11;factor<21;++factor)
{
if(number%factor != 0)
{
smallest = false;
break;
}
}
if(smallest)
{
cout << number << "\n";
break;
}
number+=20;
}
return 0;
}