Wieso bestehen viele Programme aus dutzenden Dateien?

  • Hi,

    hier mal ne generelle Sache, die ich nicht verstehe.

    Die meisten Programme (vor allem kostenpflichtige) und Betriebssysteme bestehen aus dutzenden Dateien in vielen Ordnern.

    viele Freeware-Programme bestehen ja meist nur aus wenigen, wenn nicht sogar nur einer Datei. Und von den Funktionen haben diese nur bisschen weniger zu bieten als die speicherplatzverschwenderischen großen kostenpflichtigen Programme.

    Besonders, wenn man noch einen Virenwächter aktiv hat, macht sich das schwer bemerkbar, ob ein Programm aus vielen Dateien oder nur einer Hauptdatei besteht. (z.B. Openoffice, da habe ich nun Soffice.exe in Ausnahmeliste im Virenguard eingetragen, sonst war das nimmer auszuhalten, so lahm war das)

    Auch fragmentiert dadurch die Festplatte schneller und auch die Festplatte wird schlechter ausgenutzt (wegen der Blockgröße hat ja jede Datei eine Mindestgröße, z.B. 16kbyte)

    Klar, es ist dann vielleicht einfacher mal eine DLL im Fehlerfall auszutauschen... aber sonst fällt mir nun kein Vorteil an.


    Wieso ist das meist so schlecht gemacht? Beim Firefox ist das übrigens leider auch nicht anders. Der wäre bestimmt auch noch um einiges schneller, wenn er aus weniger Dateien bestehen würde.

  • Naja, schneller wäre es sicher nicht. Denn es macht einen riesen Unterschied, ob du eine einzige Datei (zB ganzes Office) mit 600 MB in den Speicher laden musst oder ob du 20 Dateien mit ingestammt 50 MB brauchst. Die Dateien dienen dazu das gesamte Programm modular aufzubauen, sodass nur das geladen, was gebraucht wird.

    Außerdem lassen sich einzelne Dateien mit eigenen Funktionen besser editieren und konfigurieren. Am Firefox-Profil könntest du nicht viel herumwerkeln, wenn es nur aus einer Datei bestehen würde.

  • Zitat

    oder ob du 20 Dateien mit ingestammt 50 MB brauchst.

    Wenn es ja so wäre, wäre es ja auch schon mehr als ok. Leider ist es derzeit so:

    Beispiel: Openoffice 1.1.4

    1291 Dateien in 102 Ordnern , Gesamtgröße 123 MB, auf Datenträger 126 MB belegt.


    Ein modularer Aufbau ist ja sinnvoll, aber wenn es dann über 1000 Dateien sind ... da braucht auch ein schnelles System lange, bis es alle benötigten Dateien zusammengesucht hat.
    Man muss halt nen Kompromiss finden zwischen Modularität und geringer Dateienanzahl. :) Derzeit ist das bei Openoffice leider sehr schlecht gemacht

  • nehmen wir mal den Firefox als Beispiel.
    Du hast jede Menge Erweiterungen. Die müssen vorher noch gespeichert werden. In Die firefox.exe bestimmt nicht, die kann nicht während dem Betrieb geändert werden,

    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.1) Gecko/20060202 Firefox/1.5.0.1 8)
    Jabber: WasCostas[at]jabber.org

  • Ja, das ist mir ja auch klar. Es geht nur um die Dateien die nach der Firefox-Installation schon da sind. Da sind eben viele kleine Dateien, die alles verlangsamen ....

    von Erweiterungen war ja nicht die Rede, die müssen natürlich als extra Dateien angelegt werden. 8)

    Übrigens: Noch ein anders Beispiel. Ich habe gerade den Foxitreader mit dem Programm UPX-IT nochmals gepackt.
    Die foxitreader.exe Datei ist nun anstatt 1968 kbytes nur noch 854 kbytes groß. Nun startet der Reader sogar noch etwas schneller, da er weniger von der Festplatte lesen muss und die Zeit für das entpacken vernachlässigbar gering ist.
    Schon cool, dass selbst EXE Dateien noch so gut gepackt werden können. Schade, dass dies nicht generell getan wird....

  • andym82: leider kann es nicht generell so gemacht werden, da upx gepackte dll,exe etc noch probleme haben bzw fehler durch das packen entstehen koennen. aber falls es dich intressiert, ich hab seit mehreren monaten eine installerversion die ff komplett rekomprimiert (bei mir incl ext/themes <10mb)
    schau einfach mal mein batchsetup v2 an.

    bc

  • habs Batchsetup probiert und vertraut ... und wurde enttäuscht!
    Nach Installation ging der Firefox gar nicht mehr und das Profil auch nicht. Blödes Batchsetup! bringt nur Ärger. :roll:
    Ich hatte zum Glück noch ne Sicherung des Profils.... :)

    aber egal, ich wollte ja nicht mein Firefox mit Upx packen, sondern Firefox an sich sollte ja schon kompakter sein.
    Man kann ja nicht von den Benutzern erwarten, dass die ihre Programme selber nochmal packen, nur weil die Entwickler so schlampig mit dem Speicherplatz umgegangen sind

    :lol:

  • naja schlampig?

    der Vorteil an vielen dateien liegt doch auhc an der update funktionalität.

    wenn du eine datei hast muss die gesamte datei upgedatet werden.

    hast du mehrere reicht es meistens völlig aus nur eine datei auszutauschen.

    z.B bei windows. da tauschte ja auhc nicht bie jedem bugfix die gesamten ~1GB an dateien aus ;)

  • bei Windows ist das ja verständlich. Wobei es ja noch effizienter wäre, bei Bugfixes nur den Teil einer DLL upzudaten, der verändert wurde - als nicht die komplette DLL auszutauschen.
    Dann bräuchte man auch keine vielen Dateien mehr, sondern es würden ein paar große völlig ausreichen.

    Früher oder später wird das bestimmt aber gemacht. Ich glaube, bei Windows ist das neuerdings sogar der Fall.

  • Aus der Sicht des Programmierers bringt das Aufteilen auf mehrere oder viele Dateien nur Vorteile.

    Programme bestehen aus verschiedenen Datenformen - Programmcode, Musikdateien, Graphiken, Daten. Und häufig wird nur ein Teil benötigt. Denk nur mal an Spiele. Um den Arbeitsspeicher zu schonen, werden nur die Daten geladen, die für den jeweiligen Level benötigt werden.

    Auch der Entwicklungsprozeß vereinfacht sich, wenn Graphiken einfach ersetzt werden können oder man eine Spielvariable durch Verändern einer INI-Datei anpaßt. Vor allem dann, wenn mehrere Entwickler an einem Programm arbeiten oder gar externe Module wie Treiber oder lizenzierter Code verwendet wird.

  • Zitat von andym82

    Auch fragmentiert dadurch die Festplatte schneller und auch die Festplatte wird schlechter ausgenutzt (wegen der Blockgröße hat ja jede Datei eine Mindestgröße, z.B. 16kbyte)


    Soweit ich weiß können genauso auch große Dateien fragmentieren, wo es dann wohl keinen Unterschied macht, ob ich eine große Datei auf der Festplatte verstreut habe oder eben die einzelnen Dateien an verschieden Positionen sind. Und 16KByte sind wohl auch nur bei FAT32 Partition ab 16GB oder so anzutreffen. NTFS Partition haben viel kleinere Cluster (bei meiner 130GB Partition auch nur 4Kbyte) und auch andere Techniken, damit kleine Dateien nicht so viel Platz verschwenden.
    Zur Abschreckung solltest du dir mal ein Dateisystem mit einer Linux-Distribution angucken. Das sind wohl noch einige Dateien mehr. ;)

  • Große Dateien können aber defragmentiert werden - kleine Dateien nicht. 4K sind nicht unbedingt wenig, IMO - zumindest wenn nur 1% davon genutzt wird.

    Das ärgerliche an DLL-Dateien ist daß fast jedes Programm seine eigenen Dateien mitbringt, obwohl andere vermutlich schon genau die gleichen Routinen bereitstellen - gelegentlich werden dann sogar neue Dateien mit alten Versionen überschrieben...