<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" type="guide" style="task" id="harmful" xml:lang="ko">
    <info>
     <link type="guide" xref="index#harm"/>
    
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>조성호</mal:name>
      <mal:email>shcho@gnome.org</mal:email>
      <mal:years>2016</mal:years>
    </mal:credit>
  </info>
    <title>디스크 탐색은 성능에 해롭습니다</title>
    <p>디스크 탐색은 처리할 수 있는 동작 중 가장 오래걸리는 동작입니다. 우리가 얼마나 많이 동작을 처리하는지 살펴보기 전에는 잘 모르실텐데, 하여간 그렇다니까 믿어주세요. 그러니, 다음은 삼가해주셨으면 좋겠습니다:</p>
    <list type="unordered">
        <item>
            <p>디스크 전반적으로 작은 파일을 여러 개 두기.</p>
        </item>
        <item>
            <p>디스크에 있는 여러 파일을 열기, 상태 보기, 읽기</p>
        </item>
        <item>
            <p>파일을 단편화하여 더 많은 부분을 탐색하도록 제각각 다른 시간에 파일에 무언가를 진행하기.</p>
        </item>
        <item>
            <p>다른 실린더 그룹에 위치하여 더 많은 부분을 탐색하도록, 서로 다른 디렉터리에 있는 파일에 무언가를 진행하기.</p>
        </item>
        <item>
            <p>한 번만 처리해도 될 일을 여러번 처리하기.</p>
        </item>
    </list>
    <p>탐색이 용이하게 최적화 할 수 있는 방법:</p>
    <list type="unordered">
        <item>
            <p>데이터는 단일 파일에 모아둡니다.</p>
        </item>
        <item>
            <p>데이터는 동일한 디렉터리에 넣습니다.</p>
        </item>
        <item>
            <p>데이터를 캐싱하여 종종 다시 읽을 필요가 없게 합니다.</p>
        </item>
        <item>
            <p>데이터를 공유하여 각 프로그램을 메모리로 불러들일 때 디스크에서 다시 읽지 않게 합니다.</p>
        </item>
        <item>
            <p>
                Consider caching all of the data in a single binary file that is properly aligned and can be mmapped.
            </p>
        </item>
    </list>
    <p>디스크 탐색시 직면하는 문제는 불행하게도 우리가 종종 진행하는 읽기 동작 과정에 복합적으로 일어납니다. 읽기는 동기적 처리 과정이지만 쓰기는 그렇지 않다는걸 기억하십시오. 매번 읽는 과정에 직렬화 처리하며, 프로그램 레이턴시에 영향을 줄 때 이런 문제가 생깁니다.</p>
</page>
