Frank Gerlach schrieb:
Warum nutzt kein Mensch Smalltalk, obwohl es schon ca. 30 Jahre alt sein dürfte?
Warum beherrschen nur so wenig Menschen den Umgang mit Differentialgleichungen ? Die Grundrechenarten sind doch viel einfacher....
Wieviel Speicher braucht man denn dafuer - 500 oder 1500Mbyte ?
Das hat mit Java relativ wenig zu tun.
Tatsache ist, dass Visual C++ fuer ein groesseres Programmierprojekt (nennen wir es X) ca 100Mbyte RAM verbraucht, Ecplise aber locker mal 500Mbyte fuer X haben will. Ich denke, das hat schon etwas mit der Ineffizienz von java zu tun. Wieso braucht zB jedes Objekt einen Monitor ? Warum kann man keine Objekte auf dem Stack allokieren ? Warum kann man Objekte nicht als Array effizient hintereinander im Speicher ablegen ? MeineKlasse[] array wird in java als Array von Zeigern abgelegt. Man braucht also Speicher fuer die Referenzen sowie Laufzeit fuer die Dereferenzierung. Und wenn MeineKlasse ein Member vom Typ MeineKlasse2 hat, braucht man nochmal eine Dereferenzierung. In C++ ist das einfach ein *einzelner* Speicherblock.
Wenn man das so anlegt. Im allgemeinen wird man aber auch in C++ mit Zeigern hantieren. Außerdem spielt die Dereferenzierung außer in Extremfällen kaum eine Perfomance-relevante Rolle. Wenn Du schon an Java rummeckern mußt, dann doch bitte an den Dingen die wirklich Scheiße sind, wie zum Beispiel, dass Methoden per default virtuell sind. DAS ist wirklich ein Performancekiller.
Viele Grüße, Eric