Die meisten Programme unter Java sind nur deshalb grottenlahm...
-
Bei arithmetischen Operationen konnte ich keinen deutlichen Unterschied feststellen. Die GUI ist aber tatsächlich viel langsamer.
-
DrZoidberg schrieb:
Bei arithmetischen Operationen konnte ich keinen deutlichen Unterschied feststellen. Die GUI ist aber tatsächlich viel langsamer.
Ich schon. Rechne mal 1.000.000 Wurzeln unter Java und unter C++ aus. Das ist ein ganz schöner Unterschied. Gleiches gilt für sin, cos,...!
-
Dass die arithmetischen Operationen (bei kleinen bis mittleren Problemen) nicht so aufallen, liegt halt am Wahrnehmungvermögen des Menschen. Bei richtigen Sortieralgorithmen oder NP-vollständigen Problemen kann man das aber sogar ohne Systemzeitcounter feststellen. Die Nase vorn hat C++.
-
Also ich will mal mein senf auch dazu geben.
Java ist in der GUI schon langsamer das ist schon hundermal diskutiert worden.
Zum eigentlichen Thema
...weil die Leute nicht darauf achten, extensive Objekterzeugung zu vermeiden.
Ich glaube damit ist folgendes gemeint.
Das man bei schleifen keine Objeckte erzeugen soll wenn man es vermeiden kann.
-
CoTech schrieb:
Java ist in der GUI schon langsamer das ist schon hundermal diskutiert worden.
Nein. Das ist nicht 100 mal diskutiert worden, das ist 100 mal behauptet worden. Ich habe noch keine Tests gesehen, die diese Behauptung untermauern.
Zudem ist die GUI IMHO der Bereich in einem Programm, der Performance i.d.R am wenigsten nötig hat.
-
Ich glaube damit ist folgendes gemeint.
Das man bei schleifen keine Objeckte erzeugen soll wenn man es vermeiden kann.Ich weiss zwar auch nicht was er meint, aber obiges gilt wohl in jeder OOP.
Jockel
-
Leutz, googelt mal nach Algorithmen-Tests unter verschienden Programmiersprachen. Da hat C++ die Nase vor Java eindeutig vorn. Hab ich während meines Studiums schon Tausende im Netz und in Büchern gesehen. Die Unterschiede merkt man (normalerweise) kaum, aber sie sind da.
Zur GUI: Das nicht nur allgemein bekannt, sondern selbst SUN gibt zu, dass die GUI langsamener ist als in anderen Programmiersprachen. Das ist verständlich, da SWING beispielsweise auf komplett selbstdefinierte Dialogelemente setzt, anstatt die Standardversionen eines OS wie Windows oder Linux zu nehmen (natürlich um die plattformunabhängigkeit zu bewahren). Daher der Performanceverlust.
Dennoch hackt das Programm meistens, weil die Leute nicht mit Java umgehen können.
-
Gregor schrieb:
DrZoidberg schrieb:
Bei arithmetischen Operationen konnte ich keinen deutlichen Unterschied feststellen. Die GUI ist aber tatsächlich viel langsamer.
Ich schon. Rechne mal 1.000.000 Wurzeln unter Java und unter C++ aus. Das ist ein ganz schöner Unterschied. Gleiches gilt für sin, cos,...!
Ich habe mal 2 Testprogramme geschrieben.
Ein C Programm
#include <Math.h> #include <stdio.h> int main() { double i=34323.432; double j; int k; int l=0; for(k=0; k<30000000; k++) { j=sqrt(i); l++; i*=1.0000005; } printf("%f - %d",j,l); }
Und ein Java Programm
class WurzelTest { public static void main(String[] args) { double i=34323.432; double j=0; int k; int l=0; for(k=0; k<30000000; k++) { j=Math.sqrt(i); l++; i*=1.0000005; } System.out.println(j +" - "+l); } }
Ich habe beide Programme auf einem AMD 1000 MHz Rechner laufen lassen.
Wenn ich das C Programm mit "gcc wurzeltest.c" compiliere läuft es über 8 Sekunden.
Mit "gcc -O2 wurzeltest.c" läuft es ziemlich genau 1 Sekunde.Das Java Programm habe ich unter Java 1.4.2 laufen lassen und es benötigte ebenfalls ungefähr 1 Sekunde.
ich habe dann die Anzahl der Schleifendurchläufe verzehnfacht.
Danach brauchte das C Programm (mit -O2 compiliert) 11,5 Sekunden
und das Java Programm brauchte 8 Sekunden.
-
@DrZoidberg du hast gemessen wie langsamm die ausgabe in der konsole ist, setzen 6 :p
-
DrZoidberg: Rück doch mal die Zeiten raus ohne Ausgabe. Dann erlebst du dein Wunder. Das blaue.
-
Seit ihr blind?
Die Ausgabe steht _hinter_ der for Schleife und wird nur einmal ausgeführt.
Ohne Ausgabe ist es übrigens genauso schnell.
-
Ok ok
-
Hey,
Zu diesem Thema empfehle ich die letzte ct' und die 4 Wochen davor. In den beiden ct's ist ein zwei teiliger Artikel, der sich der Performance von C/C++, Java, C# und Delphi angenommen hat.
Wie die Redakteure selbst sagen, ist es kein absolutes Urteil, aber es werden ein paar interessante Aspekte dieser vier Programmiersprachen untersucht.Viel Spass beim Lesen,
Hogo
-
Hogo schrieb:
Wie die Redakteure selbst sagen, ist es kein absolutes Urteil, aber es werden ein paar interessante Aspekte dieser vier Programmiersprachen untersucht.
Man kann an diesem Artikel erkennen, dass es in jeder Sprache möglich ist, äußerst lahme Programme zu schreiben. ...viel mehr eigentlich nicht.