Blame optimization-guide/sv/harmful.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" type="guide" style="task" id="harmful" xml:lang="sv">
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>Anders Jonsson</mal:name>
Packit 1470ea
      <mal:email>anders.jonsson@norsjovallen.se</mal:email>
Packit 1470ea
      <mal:years>2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
    <title>Disksökningar ansedda skadliga</title>
Packit 1470ea
    

Disksökningar är en av de dyraste operationerna du kan utföra. Det kan vara svårt att inse om man betänker hur många av dem vi utför, men tro mig, det är de. Försök därför hålla dig från följande ej optimala beteende:

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

Placera massor av små filer över hela disken.

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

Öppna, köra ”stat” på och läsa ett stort antal filer över hela disken

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

Göra det ovanstående på filer som lagts ut vid olika tidpunkter, så att de säkert är fragmenterade och orsakar än mer sökning.

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

Göra det ovanstående på filer som är i olika kataloger, så att de säkert är i olika cylindergrupper och orsakar än mer sökning.

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

Att upprepat göra det ovanstående då det bara behöver göras en gång.

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

Vägar på vilket du kan optimera din kod att bli mer sökvänlig:

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

Samla data i en enda fil.

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

Håll data samlat i samma katalog.

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

Cacha data så att det inte konstant behöver läsas om.

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

Dela data så att det inte behöver läsas om från disk då varje program läses in.

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

Överväg att cacha alla data i en enstaka binärfil som är korrekt justerad och du kan köra mmap på.

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

Problemet med disksökningar förvärras för läsningar, vilket dessvärre är vad vi gör. Kom ihåg att läsningar generellt är synkrona medan skrivningar är asynkrona. Detta förvärrar bara problemet, serialiserar varje läsning och bidrar till programlatens.

Packit 1470ea
</page>