Geschwindigkeisvergleich: Swing vs GTK-Bindings vs. Delphi / Kylix

Andreas Gaisbauer

Erfahrenes Mitglied
Hallo,

follgendes Problem: Ich persönlich empfinde Java Swing Anwendungen als sehr langsam. Genau aus diesem Grund scheue ich mich vor Java für den Desktop. Sicher gibts wirklich professionelle Anwendungen die diesen Geschwindigkeitsverlust (wahrscheinlich durch gute Optimirung) nicht aufweisen, aber bei zahlreischen Opensource Anwendungen ist dieser Geschwindigkeitsverlust doch Teilweise extrem. So, ich muss jetzt aber ein Cross Platform Tool schreiben (hauptsächlich abholen von Dateien, in einer DB speichern und das ganze wieder in eine anständigen Form wieder ausgeben). Das ganze muss unter Winduows und Linux laufen. Die wahl der Technik ist frei (wer sich jetzt an meinen Email Client Thread erinnet fühlt, liegt nicht ganz falsch ;)). Ok, soweit sogut. Meine Frage jetzt:

1) Wie sieht es zum Beispiel mit Python mit GTK+ aus? Ist das vom "gefühlten" Speed her schneller, langsamer ode gleich?

2) Gibts irgendwelche Benchmarks?

3) Wie schneiden beide ansätze gegenüber z.b. Delphi / Kylix ab? (btw: Wie hoch ist eigentlich der Portierungsaufwand von Delphi nach Kylix?)

Ich rede jetzt nicht von irgendwelchen Highend Anwendungen in der Größenordnung von Eclipse oder Together, sondern von kleinen bis mittleren Anwendungen in der Größenordnung von z.B. Outlook Express oder Thunderbird.

bye
 
Hi Andreas,

rein vom Gefühl her und aus meiner Erfahrung kann ich sagen:

Zu 1: Ich programmiere im Augenblick mit Ruby/Gnome2 (sollte wohl vergleichbar mit PyGtk sein) und habe den Eindruck, dass es schneller ist, als Swing. Wann immer Gtk ins Spiel kommt, sollte es schneller sein, als Swing, weil Gtk in C geschrieben ist und deswegen nicht die Zwischenschicht der Java-VM braucht.

Zu 3: Delphi unter Windows greift auf das Win32-API zu, und wird daher auch schneller sein, als Gtk+ oder Swing. Wie sich das mit Kylix unter Linux verhält, kann ich aber nicht sagen.

Technische Nachweise kann ich nicht liefern, ist wie schon gesagt nur mein Eindruck.

Der Portierungsaufwand von Delphi zu Kylix hängt von Deiner Art zu Programmieren ab. Wenn Du bei den verwendeten Bibliotheken nur CLX benutzt und auf die windows-abhängigen LIbraries verzichtest, ist der Aufwand relativ gering. Allerdings ist das auch keine richtige Plattformunabhängigkeit, weil die Anwendung sowohl für Linux als auf für Windows separat kompiliert werden muss.
Wenn Du richtige Plattformunabhängigkeit willst, würde ich eher zu einer Scriptsprache und Gtk raten - oder eben Java mit dem Gtk-Binding. ;)
 
Hi Dario,
Original geschrieben von Dario Linsky
Zu 1: Ich programmiere im Augenblick mit Ruby/Gnome2 (sollte wohl vergleichbar mit PyGtk sein) und habe den Eindruck, dass es schneller ist, als Swing. Wann immer Gtk ins Spiel kommt, sollte es schneller sein, als Swing, weil Gtk in C geschrieben ist und deswegen nicht die Zwischenschicht der Java-VM braucht.
Das dachte ich auch. Die Frage ist jetzt wie die Sache aussieht, wenn man das ganze mit dem JNI macht - rein vom Speed her...

Zu 3: Delphi unter Windows greift auf das Win32-API zu, und wird daher auch schneller sein, als Gtk+ oder Swing. Wie sich das mit Kylix unter Linux verhält, kann ich aber nicht sagen.

Der Portierungsaufwand von Delphi zu Kylix hängt von Deiner Art zu Programmieren ab. Wenn Du bei den verwendeten Bibliotheken nur CLX benutzt und auf die windows-abhängigen LIbraries verzichtest, ist der Aufwand relativ gering. Allerdings ist das auch keine richtige Plattformunabhängigkeit, weil die Anwendung sowohl für Linux als auf für Windows separat kompiliert werden muss.
Ein weiterer Compilerrun wäre mir relativ egal, da es zum großen Teil ja nur ein privates Projekt ist. Was mich aber von Delphi wieder weiter abbringt, ist das der Personal Version einige (eigentlich schon mehr als einige ;)) Komponenten für DB und Web Anwendungen fehlen. Und genau dafür bräuchte ich es ja...

Wenn Du richtige Plattformunabhängigkeit willst, würde ich eher zu einer Scriptsprache und Gtk raten - oder eben Java mit dem Gtk-Binding. ;)
Die Platformunabhängigkeit ist aus rein funktionalen Gesichtspunkten erwünscht. ICh möchte halt nicht 2 mal die gleiche Anwendung in 2 Sprachen schreiben müssen. Wobei es schon interessant wäre den einen Client in C# und den anderen in Java zu schreiben :) Außerdem mag ich Skriptsprachen :). Denke werde mich für Ruby oder Python entscheiden, wobei ich mehr zu Python tendiere (wegen Zope).

Java + GTK war mir gänzlich unbekannt :)

thx und bye
 
SWT ist dein Freund.

SWT ist das Toolkit mit dem auch Eclipse entwickelt worden ist.
SWT basiert auf nativen Elementen weshalb es da keine Geschwindigkeitsnachteile gibt.

Eine gute Einführung und Beispielcodes zu SWT sind bei Eclipse mit dabei.
 

Neue Beiträge

Zurück