Anzahl .class Dateien verringern

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Moin.

Also wenn ich alles kompiliere, dann habe ich am Ende knapp 1300 Dateien.

Vielleicht .class Dateien gibt es doppelt. d.h. die heissen dann bla$1.class, bla$2.class, etc.

Warum passiert das so? Wie kann ich das wegoptimieren?
 
Ja das hab ich jetzt auch verstanden.

Aber es wäre doch besser, weniger .class Dateien zu erzeugen, oder? Weil mit jconsole seh cih, dass knapp 5000 classes geladen wurden.
das würd ich gern verringen, ich denk dann läuft das programm auch schnell, oder?

macht sowas sinn?
 
Das macht null und garkein Sinn. Die Class-Dateien entsprechen der Anzahl Klassen die du implementiert hast. Die Anzahl Klassen hat nichts mit der Geschwindigkeit des Programmes zu tun. Auch Programme mit 1000000 Klassen können schneller sein, als ein "hello World" mit einer Endlosschleife...

Wenn dich die Dateien stören, packe sie doch in ein JAR-File (-> google, FAQ, ...). Dann ist dein ganzes Programm nur noch eine Datei, Problem gegessen :wink:
 
kann ich irgendwie nicht so richtig glauben.

ich hab sehr viele klassen und diese klassen erstellen teilweise bis zu 60 .class dateien.

schon alleine die dateien müssen doch dann alle erstmal geladen werden.
das braucht doch bestimmt länger, als wenn ich nur eine lade, oder?
 
Das kann durchaus sein,
Mega-Programme wie Word oder Eclipse brauchen ja nicht zum Spass 30 Sekunden zum Start.
Aber das kann sich nur auf den Start auswirken,
wenn dann die 50 MB geladen sind ist es egal ob sie vorher in einer Datei standen oder in mehreren.

Aber bedenke: wenn alles in einer/ wenigen Dateien steht, dann dauert es länger, diese wenigen zu laden.
Viel sparen kann man da also nicht.

Ideal wäre es den Code an sich zu verkürzen,
ein Hello World-Endlosschleife-Programm ist also beim Start immer unschlagbar schnell 😉

anonymer Slater
 
Gast hat gesagt.:
Das kann durchaus sein,
Mega-Programme wie Word oder Eclipse brauchen ja nicht zum Spass 30 Sekunden zum Start.
Aber das kann sich nur auf den Start auswirken,
wenn dann die 50 MB geladen sind ist es egal ob sie vorher in einer Datei standen oder in mehreren.

Aber bedenke: wenn alles in einer/ wenigen Dateien steht, dann dauert es länger, diese wenigen zu laden.
Viel sparen kann man da also nicht.

Ideal wäre es den Code an sich zu verkürzen,
ein Hello World-Endlosschleife-Programm ist also beim Start immer unschlagbar schnell 😉

anonymer Slater

zb. test.class ist 50 kb gross.

jetzt hab ich aber noch knapp 90 $n.class dateien davon, welche dann insgesamt 150 kb gross sind.

sowas bläht doch das programm auf, oder nicht?
 
Der Code kommt doch nicht aus dem Nichts. Wenn du die annonymen inneren Klassen weglässt wird test größer.
Und Überhaupt, stell dich nicht so an.
Als ob's auf ein paar kb mehr oder weniger ankommen würde. :roll:
 
Jede Klasse enthält ja auch Code.
Packst du den in andere Klassen, werden die entsprechend größer.

Dadurch das dann weniger Klassen geladen werden müssen und der Overhead geringer ist, wird das Programm vermutlich schneller werden.

Aber:
- Der Code wird deutlich schwerer lesbarer
- Der Performancegewinn ist vermutlich nicht spürbar, beziehungsweise marginal spürbar beim starten.

Die Kosten überwiegen bei weitem nicht den Nutzen. Alternativ kann man sich fragen, warum man den 90 anonyme Klassen in einer Klasse braucht, ob das Design da nicht suboptimal ist.
 
Irgendwie verwechselst Du hier zwei Sachen.

Wenn Dein Programm aus mehreren Klassen und Dateien besteht, dann bedeutet dass physischen Speicher auf Deiner Festplatte , der belegt wird.

Wenn Du ein Programm lädst und ausführst, dann verbraucht es jedoch Prozessorleistung und Arbeitsspeicher. Und je nachdem , wie gut Dein Programm programmiert ist, verbraucht es mehr oder weniger davon und läuft langsamer oder schneller.

MFG

Acha
 
mir ist schon klar, dass es am design liegt.

sagen wir mal ich hänge nen actionlistener an nen button. der hat dann nichtma funktionalität. trotzdem wird mir eine $n.class datei erstellt und die is mindestens 2kb. gross.

ich denke, wenn das in der selben klasse drin wäre, dann würd der unterschied nicht 2 kb sein, oder?
 
Gast hat gesagt.:
mir ist schon klar, dass es am design liegt.

sagen wir mal ich hänge nen actionlistener an nen button. der hat dann nichtma funktionalität. trotzdem wird mir eine $n.class datei erstellt und die is mindestens 2kb. gross.

ich denke, wenn das in der selben klasse drin wäre, dann würd der unterschied nicht 2 kb sein, oder?
Wenn dir der Unterschied wichtig ist, dann nimm C zum programmieren, da kannst du schlanke und schnelle Programme programmieren 😉

Diese Diskussion führt zu nix:
Ja, die Programme werden kleiner und schneller geladen, wenn du alles in eine Datei integrierst. Aber der Gewinn ist marginal und die Kosten im Sinne von Lesbarkeit, Wartbarkeit etc. nicht wert.
 
ASM ist noch wesentlich kompakter...
Wenn die paar kb wirklich eine Rolle spielen sollten (was ich bezweifle), dann gewinnst du mit einem Obfuscator wesentlich mehr als mit dem Inlinen von inneren Klassen.
 
mir gehts ja nicht hier um die 2 kb generell. mir gehts um zb. 90*2 kb. da sieht das ganze schon anders aus.

das macht da schon ne ganze menge aus denke ich.

naja is egal, werd ich das alleine weiter löse 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben