Blame optimization-guide/de/harmful.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" type="guide" style="task" id="harmful" xml:lang="de">
Packit 1470ea
    <info>
Packit 1470ea
     <link type="guide" xref="index#harm"/>
Packit 1470ea
    
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Mario Blättermann</mal:name>
Packit 1470ea
      <mal:email>mario.blaettermann@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2009, 2012, 2013, 2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Christian Kirbach</mal:name>
Packit 1470ea
      <mal:email>christian.kirbach@googlemail.com</mal:email>
Packit 1470ea
      <mal:years>2010</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
    <title>Laufwerkszugriffe werden als nachteilig angesehen</title>
Packit 1470ea
    

Laufwerkszugriffe sind die wohl aufwändigsten Vorgänge, die Sie überhaupt ausführen können. Sie wissen das womöglich nicht aufgrund der Anzahl der Ausführungen, aber glauben Sie mir, dass sie es sind. Folglich vermeiden Sie bitte das folgende ungünstige Verhalten:

Packit 1470ea
    <list type="unordered">
Packit 1470ea
        <item>
Packit 1470ea
            

Viele kleine Dateien auf dem gesamten Laufwerk verteilen.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Öffnen, stat() ausführen und lesen vieler Dateien vom gesamten Laufwerk

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Obiges mit Dateien tun, die zu verschiedenen Zeitpunkten erstellt wurden, so dass sie fragmentiert sind und noch mehr Plattenaktivität verursachen.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Obiges mit Dateien tun, die sich in verschiedenen Ordnern befinden, so dass auf verschiedene Zylindergruppen zugegriffen wird und so noch mehr Plattenaktivität verursacht wird.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Wiederholt obiges tun, obwohl es nur einmal getan werden muss.

Packit 1470ea
        </item>
Packit 1470ea
    </list>
Packit 1470ea
    

Mögliche Wege, wie Sie Ihren Code suchfreundlich optimieren können:

Packit 1470ea
    <list type="unordered">
Packit 1470ea
        <item>
Packit 1470ea
            

Fassen Sie Daten in einer einzigen Datei zusammen.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Halten Sie Daten im gleichen Ordner vor.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Speichern Sie Daten zwischen, so dass sie nicht fortwährend erneut eingelesen werden müssen.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Geben Sie Daten frei, so dass sie nicht beim Laden von Anwendungen immer wieder erneut gelesen werden müssen.

Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
            

Erwägen Sie, alle Daten in einer einzigen Binärdatei zwischenzuspeichern, die sauber aufgebaut ist und mit mmap verarbeitbar ist.

Packit 1470ea
        </item>
Packit 1470ea
    </list>
Packit 1470ea
    

Die Probleme mit Plattenzugriffen verstärken sich beim Lesen, was wir leider eben gerade tun. Merken Sie sich, dass im Allgemeinen Lesen synchron und Schreiben asynchron verläuft. Das verschlimmert nur das Problem mit jedem seriellen Lesevorgang und trägt zu Programmverzögerungen bei.

Packit 1470ea
</page>