Ist Python schneller als Java ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Solid Snake
User
Beiträge: 7
Registriert: Sonntag 11. Juni 2006, 16:20

Hi
Ich würde mal gerne wissen, ob Python schneller ist als Java.
Und wo wir schon dabei sind: Kann man mit Python auch Hardwarenah programmieren, was mit Java garnicht möglich ist ?


Ich stelle diese frage, weil ich mich zwischen den beiden Sprachen entscheiden muss.. (also bitte ernst nehmen^^)




MfG
Solid Snake ;)
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Solid Snake hat geschrieben:Kann man mit Python auch Hardwarenah programmieren, was mit Java garnicht möglich ist ?
Hardware nah. Naja, du kannst mit C++ nachhelfen und das nicht Hardwarenahe in python schreiben ;)

Aber für Hardware nah würde ich dir allg. C++ empfehlen weil das einiges schneller ist als Python
BlackJack

C++ ist nicht schneller als Python. Umgekehrt auch nicht. Gleiches gilt für Java. Das sind Sprachen. Eine Sprache kann nicht schnell oder langsam sein. Konkrete Implementierungen können das. Da kommt es dann aber auch wieder auf das zu lösende Problem und den verwendeten Algorithmus an welche die Nase vorn hat.

Und auch nicht zu unterschätzen ist die Zeit die man benötigt um eine effiziente oder auch nur funktionierende Lösung umzusetzen. Python-Implementierungen mögen zwar langsamer sein als Assembler-Code der das gleiche Problem löst, aber ich würde lieber Python schreiben und lesen als Assembler.

Letztendlich gibt es nur die Frage "ist es schnell genug". Und da hat Python den Vorteil (IMHO) das man sehr schnell lesbare Prototypen schreiben kann und einfach messen kann ob's reicht. Und wenn nicht, dann lassen sich die kritischen Teile, und nur die, in Pyrex oder C umschreiben und es passt wieder.
Solid Snake
User
Beiträge: 7
Registriert: Sonntag 11. Juni 2006, 16:20

Erstmal Danke für eure Antworten^^

Mit der Schnelligkeit meinte ich eigentlich die Ausführungszeit..
Wenn man z.B. ein Java Applikation öffnet, dauert es lang, bis alles fertig geladen wird und wenn man Java Spiele spielt, kann es meistens sehr stark ruckeln..

Und da ich noch nie ein reines Python Spiel gespielt habe, kann ich nicht wissen, ob die Python Spiele auch so ruckeln wie die Java Spiele und ob die Applikationen
auch sehr lange brauchen, bis die ganzen Menüs und Buttons fertig gelanden werden.


Als ich gerade ein bischen am googlen war, habe ich folgendes gefunden:
http://ambient.2y.net/leif/projects/python-vs-java/
(ein Benchmark test zwischen Java und Python)


Aber ich gebe BlackJack recht. Es kommt eigentlich nicht auf die Sprache an, sondern auf den Programmierer und seine Techniken.
Wenn man alles sehr optimiert, kann es auch fast so schnell werden wie die kompilierte Sprachen..
Aber ich frag mich, ob das auch bei den Grafik Demos so ist, weil die Grafiken nicht optimiert werden können, wenn sie schon
mit 16Bit Farbe angezeigt werden (256 Farben würden ecklig aussehen...)
und trotzdem arg ruckeln.. (die Applikationen haben ja nur Buttons und Co. und die können schneller geladen werden als diverse Grafiken).



@DatenMetzgerX:
Hardware nah :P (sorry, dass ich es vorhin zusammen geschrieben habe^^" solche Fehler passieren mir ab und zu mal..).
Ich hatte eigentlich vor, kleine Tools zu programmieren, mitdem ich dann auf meine Systemdaten zugreifen kann, damit ich Infos bekommen
oder mein CD-Rom Laufwerk steuern kann.
Für solche sachen, würde ich auf C++ verzichten, weil es sehr lange dauern würde, bis ich's fertig hab... deswegen habe ich nach
Programmiersprachen gesucht, mitdem ich meine Sachen schnell programmieren kann, ohne Probleme mit dem Syntax zu haben.. und da
hab ich dann auf Ruby und Python gestossen, aber am Ende habe ich mich doch noch für Python entschieden.
C++ war für mich ein Alptraum und gleichzeitig eine Zeitverschwendung, als ich mich damit intensiv beschäftigte (früher mal)...




MfG
Solid Snake
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Das hier ist vielleicht auch noch interresant für dich

:arrow: [wiki]Python#WelcheVorUndNachteileHatPython[/wiki]
mfg

Thomas :-)
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Auch wenn viele nichts von Benchmarks halten, schau vielleicht mal hier vorbei: http://shootout.alioth.debian.org/

Gruß, mawe
BlackJack

Solid Snake hat geschrieben:Und da ich noch nie ein reines Python Spiel gespielt habe, kann ich nicht wissen, ob die Python Spiele auch so ruckeln wie die Java Spiele und ob die Applikationen
auch sehr lange brauchen, bis die ganzen Menüs und Buttons fertig gelanden werden.
Ein "reines" Python Spiel wirst Du wohl nicht finden. Wenn Du ein Spiel in Python schreiben möchtest, dann wird das wahrscheinlich auf pygame und damit auf der SDL Bibliothek (2D) oder auf eine der Python OpenGL Engines (2D/3D) zurückgreifen. Also in beiden Fällen steckt hinter den grafiklastigen Teilen C oder C++ und Hardware.

Wie schnell eine GUI "da" ist, hängt vom verwendeten GUI Toolkit ab. Aber die gängigen Tkinter, PyGTK und wxPython sind eigentlich recht flott. Die verhalten sich zu Python ja auch eher wie das SWT zu Java.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Solid Snake hat geschrieben: Hardware nah :P (sorry, dass ich es vorhin zusammen geschrieben habe^^" solche Fehler passieren mir ab und zu mal..).
Ich hatte eigentlich vor, kleine Tools zu programmieren, mitdem ich dann auf meine Systemdaten zugreifen kann, damit ich Infos bekommen
oder mein CD-Rom Laufwerk steuern kann.
Ich würde sagen, das Adjektiv "hardwarenah" schreibt man so.
Was tu allerdings tun willst, ist eher Zugriff auf das Betriebssystem, denn normalerweise weiß dieses am besten, wie man dein CD-Laufwerk steuert. Wenn du unter Windows programmierst, dann musst du eben mit dem Windows API arbeiten (da gibts Python-Packages für).
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Solid Snake hat geschrieben:Und da ich noch nie ein reines Python Spiel gespielt habe, kann ich nicht wissen, ob die Python Spiele auch so ruckeln wie die Java Spiele und ob die Applikationen
auch sehr lange brauchen, bis die ganzen Menüs und Buttons fertig gelanden werden.
Für ein in Python+Pygame (SDL) geschriebenes Spiel kannst du dir mal Solarwolf angucken.

Ich nutze als Jabber-Client das in Python geschriebene Gajim und es funktioniert wunderbar schnell auf meinem schon etwas älterem Computer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Solid Snake
User
Beiträge: 7
Registriert: Sonntag 11. Juni 2006, 16:20

hm.. was denn nun O_o Hardwarenah oder Hardware nah ? >,<
Ich hab bis jetzt eigentlich immer Hardwarenah geschrieben :roll:

Naja, inzwischen hab ich mal Java getestet und ich muss sagen:
Es ist nicht so mein Geschmack.. obwohl ich es eigentlich nicht schlecht finde.

Und was die Schnelligkeit angeht: das hängt ganz allein vom Programmierer ab, weil ich ein paar fertiggestellte Projekte gesehen habe, wo
die Programme unterschiedlich schnell liefen.

Es gab ein Programm, das fast genauso schnell war, wie ein C++ Applikation.
Das heißt also, dass die Schnelligkeit keine Rolle spielt, soweit man in der lage ist, seine Programme zu optimieren, so dass sie schneller laufen.



@Leonidas:
Das Spiel hab ich schonmal gespielt und was die Ladezeiten angeht, find ich's recht schnell und man merkt garkein Unterschied zwischen ein Python und ein C++ Game^^ Als ob das Spiel in C++ programmiert wurde^^



Ok, leute^^ Ich sag mal so: Java und Python sind ungleich schnell :P
Es hängt ganz allein vom Programmierer ab^^ Da helfen keine Benchmarks, weil ich programme gesehen habe, die mit C++ programmiert wurden und trotzdem sehr langsam waren (siehe Entwicklungsumgebungen (Visual Studio 2005 z.B.).


Damit ist dieses Thema beendet, würd ich mal sagen^^
Vielen Dank für eure Hilfe ;)




MfG
Solid Snake
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Solid Snake hat geschrieben:hm.. was denn nun O_o Hardwarenah oder Hardware nah ? >,<
Hardwarenah.
Im Zweifelsfall immer zusammenschreiben...
Und was die Schnelligkeit angeht: das hängt ganz allein vom Programmierer ab, weil ich ein paar fertiggestellte Projekte gesehen habe, wo
die Programme unterschiedlich schnell liefen.
Im Shootout werden im Allgemeinen immer die besten Implementierungen miteinander verglichen. Und Python hängt da im Moment noch arg hinter Java hinterher. Allerdings muss man auch bedenken, dass es um Java einen Hype gab und gibt, und deshalb viel Entwicklungsarbeit in JIT etc. gesteckt wurde. Das alles steckt bei Python noch in den Kinderschuhen. Das Erklärte Ziel von PyPy ist ja, IIRC, Pythonprogramme so schnell wie C-Programme zu machen. Bis dahin ist es aber noch ein langer Weg.

Was man aber nicht vergessen darf: heutzutage ist Programmiererzeit teuerer als Rechenzeit. Und mit Python ist man sehr produktiv; mehr als mit Java. Und erst recht als mit C++ oder C.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Java ist mit ziemlicher sicherheit schneller wenn es um mathematik geht durch statische typen. Lässt sich in python mit Psyco bzw noch besser mit Pyrex was machen.

Spielt aber bei 3D spielen wiederrum nicht so die grosse rolle, > 80 % der rechenzeit sind in totoptimierten Bibliotheken und kernelteilen.

Im normalfall hält das Aufwand/Nutzen verhältnis zu Python.
Glaube kaum das du vorhast eine UT2007 alternative zu proggen ...

DirectPython für DirectX, und für opengl gibts mehrere wrapper.

Fertige engines finde ich nicht so toll, da man bei den direkten schnittstellen erstmal mehr lernt am anfang.
BlackJack

Mad-Marty hat geschrieben:Java ist mit ziemlicher sicherheit schneller wenn es um mathematik geht durch statische typen. Lässt sich in python mit Psyco bzw noch besser mit Pyrex was machen.
Kommt drauf an was "Mathematik" ist. Wenn's mit vielen Zahlen und (mehrdimesionalen) Arrays zu tun hat, dann würde ich numpy/numarray benutzen. Das ist von der Handhabung sicher schöner als entsprechende Java-Bibliotheken, wegen Operatorüberladung und Slice-Syntax.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Java ist mit ziemlicher sicherheit schneller wenn es um mathematik geht durch statische typen.
Da möchte ich mich unbedingt BlackJack anschließen: numpy (der Nachfolger von numarray und Numeric) ist auch für mich einfach "schöner" (selbe Argumente wie BlackJack). Aber auch die Performance ist verdammt gut. Und da wo sie nicht gut ist (es gibt regelmäßige Benchmarks), reicht eine kurze Bemerkung auf der Mailingliste und man versucht das Problem zu lösen. Aber hier geht es natürlich um Libraries, die in C geschrieben sind ...
Also was statische Typisierung angeht: Inzwischen sind reine Pythonimplementierungen gar nicht so langsam (kann gerne mal jemand einen Benchmark machen, ich selber habe erst einmal keine Zeit, aber darauf wette ich), so daß dieses Argument zwar theoretisch richtig ist, aber praktisch zweifele ich es an ...

Gruß,
Christian
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Und dann gibt es ja auch noch PyPy und den extcompiler (google!).
Antworten