Python oder JavaScript schneller?



  • Hi

    Ist eigentlich Python oder JavaScript schneller?
    Ging von Python aus. Hab deshalb mal grade zwei scripte geschrieben die exact gleich sein sollten:

    triangle = 1
    factors = 1
    counter = 1
    
    while factors < 500:
    	print triangle, ' - ', factors
    	factors = 1
    	counter = counter + 1
    	triangle = triangle + counter
    
    	for i in range(triangle, 1, -1):
    		if triangle % i == 0:
    			factors = factors + 1
    
    print triangle, ' - ', factors
    

    und

    var triangle = 1;
    var factors = 1;
    var counter = 1;
    do
    {
    	document.write(""+triangle+" - "+factors+"<br>");
    	factors = 1;
    	counter++;
    	triangle += counter;
    	for(var i = triangle; i > 1; i--)
    	{
    		if(triangle%i == 0)
    		{
    			factors++;
    		}
    	}	
    
    }while(factors <= 500)
    
    document.write(""+triangle+" - "+factors+"<br>");
    

    Sicher kein Meisterwerk und zusammen keine 30 min arbeit.
    Wichtig war mir, dass sie gleich sind um Vergleichbar zu bleiben.
    Außerdem sollten sie genug Rechenschritte durchlaufen um wirklich einen Trend zu sehen. Hab also willkürlich ein Projekt von Euler genommen.
    Mir ist klar dass man das mathematisch optimieren kann.

    Wie dem auch sei.
    Das JS hat ca 30 min gebraucht, obwohl ich alle min "Wait" drücken musste.
    Das Py script ist jetzt seit 45 min dran und noch nicht fertig.

    Ist das normal, dass Python so viel langsamer ist?
    Kann man das so überhaupt vergleichen?



  • Sqwan schrieb:

    Kann man das so überhaupt vergleichen?

    Schon, aber welchen Schluss ziehst du daraus?

    Vorweg: Ich verwende JavaScript nicht. Python ist grundsätzlich kein Performancewunder, aber dessen sind sich die Entwickler auch bewusst. Deshalb arbeiten unter der Haube extrem auf performance optimierte (C) Funktionen. Schon allein deshalb ist es wichtig pythonic code zu schreiben. Für mathematische Probleme gibt es ausserdem hervorrangende Bibliotheken. Und Cython. (Und mann kann auch direkt auf C zurückgreifen.) Performance Unterschied siehe http://code.jasonbhill.com/sage/project-euler-problem-12/.

    Um einen halbwegs aussagekräftigen Vergleich anzustellen, könnte man eine zumindest halbwegs optimierte mathematische Lösung in der jeweiligen Sprache, unter Ausnutzung der Möglichkeiten der Sprache und mittels der jeweiligen standard math lib implementieren. Das sollte man dann aber mit verschiedenen Problemen durchspielen.

    Dein Beispiel hingegen hat imho keine praktische Relevanz. Du hast dich ja lediglich an die Syntax gehalten, eine Sprache als Werkzeug ist aber mehr als das. Oder siehst du das anders?



  • Ich habe das wohl gerade nicht sehr klar ausgedrückt, mein Punkt: Python an sich ist meiner Erfahrung nach langsam. Aber die jeweils richtige Herangehensweise und die richtigen Funktionen (=pythonic code) gleichen das aus.



  • Vielen dank für die Antwort. Werde da morgen noch mal ausführlich zu antworten. Ist heute etwas spät geworden.



  • Der offizielle Python Interpreter hat ja nicht mal einen JIT-Compiler an Bord. Klar bringt das bei Python nicht extrem viel, aber sicher etwas.



  • Das zieht merkliche Unterschiede nach sich. Siehe PyPy. Jython und IronPython greifen auch auf JIT-compiler zurück.



  • asdfgh schrieb:

    Sqwan schrieb:

    Kann man das so überhaupt vergleichen?

    Schon, aber welchen Schluss ziehst du daraus?

    Also erstmal nur das Schleifendruchläufe sehr langsam sind.

    ... pythonic ...

    Das fällt mir (hoffentlich noch) nicht so leicht. Klar, es gibt einige gute Bibliotheken. Heißt das dann ich muss jedes Programm möglichst auf die Bibliotheken reduzieren um schnell zu bleiben?

    ... Cython ...

    Das sieht echt nützlich aus. Leider verstehe ich nicht die motivation Cython zu nehmen. Wenn ich C in Cython nutze, kann ich doch auch gleich C-Programme schreiben, oder?

    Hab leider nur ganz ganz wenig Erfahrung mit Phyton. Ich würde es mehr als "mal verwendet, aber keine Erfahung" beschreiben.



  • Sqwan schrieb:

    Das sieht echt nützlich aus. Leider verstehe ich nicht die motivation Cython zu nehmen. Wenn ich C in Cython nutze, kann ich doch auch gleich C-Programme schreiben, oder?

    Nicht wirklich. In Cython schreibt in der Regel nur man den performancekritischen Part, der sonst mit Python zu lange brauchen würde. Der Rest profitiert von der geringen Entwicklungszeit mit Python. So kann man in vielen Situationen einen recht guten Kompromiss zwischen Performance und Kosten machen.



  • Sqwan schrieb:

    ... pythonic ...

    Das fällt mir (hoffentlich noch) nicht so leicht. Klar, es gibt einige gute Bibliotheken. Heißt das dann ich muss jedes Programm möglichst auf die Bibliotheken reduzieren um schnell zu bleiben?

    Es gitb in python genau einen offensichtlichen Weg ein Problem zu lösen. Sowohl hinsichtlich der Sprachfeatures als auch der (weit verbreitenden) Bibliotheken. Wenn du diesen Weg gehst, dann schreibst du richtiges python und dann holst du auch einiges an Performance heraus.

    ... Cython ...

    Das sieht echt nützlich aus. Leider verstehe ich nicht die motivation Cython zu nehmen. Wenn ich C in Cython nutze, kann ich doch auch gleich C-Programme schreiben, oder?
    [/quote]
    Zusätzlich zum Vorposter: sieh dir Cython noch einmal an. Du kannst damit Python um statische Typisierung erweitern, C und python mischen,….

    Wofür willst du python eigentlich verwenden?



  • Ich werde von meiner Firma auf eine Stelle vorbereitet.
    Die spezifikationen waren bis FR nicht bekannt. Jetzt sind die voraussetzungen klar. Kenntnisse werden gefordert in:

    Unix und Windows
    Java und C++
    MySQL
    MS SQL
    Oracle
    JavaScript und Phyton
    CSS
    HTML5

    Außerdem der sichere Umgang mit Android und iOS.
    Es ist keine Stelle wirklich als Entwickler. Mehr eine Führungsperson im Bereich der Entwicklung. Dahin gehend soll ich mir Grundkenntnisse in all diesen Bereichen aneignen. Das mache ich grade.

    Was kann ich denn mit Python / Cython / C in Python besonders gut machen?
    Außerdem wird Office Programmierung wohl recht wichtig sein. Dachte allerdings das würde auf VBA raus laufen. Die wurde mir aber nicht genannt. Alles grade etwas seltsam.



  • Sqwan schrieb:

    Die wurde mir aber nicht genannt. Alles grade etwas seltsam.

    Ich denke, es wird noch seltsamer 🙂

    Sqwan schrieb:

    Was kann ich denn mit Python / Cython / C in Python besonders gut machen?

    Um es gaanz kurz zu fassen: ein großer Vorteil von Python ist, dass du im Vergleich zu vielen anderen Sprachen aufgrund des sehr hohen Abstraktionsniveau von Python schnell zu einem Ergebnis kommst und es eine große Bibliothekssammlung hat.
    Cython = C in Python und wurde schon kurz beantwortet. Vllt. schreibt jemand noch eine lange Antwort, sonst müsstest du dich in der Literatur oder Doku auf bestehenden Webseiten schlau machen.



  • Wieso noch seltsamer? ^^
    Mir reicht es schon 🙂

    Ich denke mal wir werden es für Analyse Zwecke nutzen.




Anmelden zum Antworten