성능 최적화는 PHP의 중요한 측면, 특히 대량의 데이터를 처리하거나 파일을 자주 조작 해야하는 시나리오에서 중요한 측면입니다. 코드의 실행 시간을 정확하게 측정함으로써 병목 현상을 식별하고 최적화 할 수 있습니다. PHP는 gettimeofday () 함수를 제공하며, 현재 타임 스탬프를 얻고 파일 조작 시간을 측정하기 위해 협력하여 파일 판독에 필요한 시간을보다 정확하게 이해하는 데 도움이 될 수 있습니다.
gettimeofday ()는 현재 타임 스탬프를 반환하고 초 및 마이크로 초를 포함하는 매우 유용한 PHP 내장 기능입니다. 리턴 값은 두 개의 키 값 쌍을 포함하는 연관 배열입니다.
SEC : 유닉스 시대 이후 초 수를 나타내는 두 번째 부분 (1970 년 1 월 1 일).
USEC : 0 ~ 999999의 초의 작은 부분을 나타내는 마이크로 초 부분.
이 두 부분을 확보하면 특히 파일 판독 값 및 정밀도가 필요한 기타 작업을 처리 할 때 프로그램의 실행 시간을 정확하게 측정 할 수 있습니다.
파일 읽기를 시작하기 전에 gettimeofday () 에게 전화하여 현재 타임 스탬프를 가져 와서 파일 읽기 전에 시간을 기록 할 수 있습니다.
<span><span><span class="hljs-variable">$startTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span></span>여기서 진정한 매개 변수는 부동 타임 스탬프 (즉, 소수점 값과 마이크로 초 합성)를 반환하여 시간을보다 정확하게 기록 할 수 있도록하는 것을 의미합니다.
다음으로 파일 읽기 작업을 수행합니다. 큰 파일을 읽는다고 가정하면 코드는 다음과 같습니다.
<span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">'large_file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
</span></span>여기서는 file_get_contents ()를 사용하여 전체 파일을 읽습니다. 이 메소드는 전체 파일 컨텐츠를 메모리에로드합니다. 파일이 특히 크면 판독 시간이 길어질 수 있습니다. 필요에 따라 라인별 읽기 등과 같은 다른 파일을 읽는 다른 방법을 사용할 수도 있습니다.
파일 읽기가 완료되면 gettimeofday ()를 다시 호출하여 현재 시간을 얻으므로 파일을 읽는 데 걸리는 시간을 얻을 수 있습니다.
<span><span><span class="hljs-variable">$endTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span></span>파일 읽기가 완료된 후 시작 시간과 종료 시간의 차이, 즉 파일 읽기에 걸리는 시간이 계산됩니다.
<span><span><span class="hljs-variable">$timeSpent</span></span><span> = </span><span><span class="hljs-variable">$endTime</span></span><span> - </span><span><span class="hljs-variable">$startTime</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"시간이 많이 걸리는 파일 읽기: "</span></span><span> . </span><span><span class="hljs-variable">$timeSpent</span></span><span> . </span><span><span class="hljs-string">"두번째"</span></span><span>;
</span></span>이렇게하면 파일 읽기 작업의 시간 소비를 몇 초 만에 출력하고 플로팅 마이크로 초 부분을 유지합니다.
위의 단계를 전체 PHP 프로그램으로 결합하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 시작 시간을 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$startTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 파일 읽기 작업을 수행하십시오</span></span><span>
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">'large_file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
</span><span><span class="hljs-comment">// 종료 시간을 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$endTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 파일 읽기 시간을 계산합니다</span></span><span>
</span><span><span class="hljs-variable">$timeSpent</span></span><span> = </span><span><span class="hljs-variable">$endTime</span></span><span> - </span><span><span class="hljs-variable">$startTime</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"시간이 많이 걸리는 파일 읽기: "</span></span><span> . </span><span><span class="hljs-variable">$timeSpent</span></span><span> . </span><span><span class="hljs-string">"두번째\n"</span></span><span>;
</span></span> <span><span><span class="hljs-section">시간이 많이 걸리는 파일 읽기: 0.023456두번째</span></span><span>
</span></span>이러한 방식으로 파일을 매우 정확하게 읽는 데 걸리는 시간을 측정하고 마이크로 초 수준에서 시간 차이를 관찰하여보다 효과적인 성능 최적화를 수행 할 수 있습니다.
gettimeofday () 는 시간을 정확하게 측정 할 수 있지만 파일 읽기를 최적화 할 때는 다음과 같은 측면에주의를 기울여야합니다.
캐싱 메커니즘 : 동일한 파일을 여러 번 읽을 때는 캐시를 사용하여 불필요한 디스크 I/O 작동을 피할 수 있습니다.
비동기식 판독 값 : 매우 큰 파일의 경우 비동기식 판독 값을 사용하여 주요 프로세스를 차단하지 않습니다.
파일 샤딩 : 파일이 매우 크면 파일을 작은 조각으로 나누고 점차적으로 메모리 사용을 줄이기 위해 읽는 것을 고려할 수 있습니다.
이러한 방법을 정확한 시간 측정과 결합함으로써 파일 읽기의 성능을 효과적으로 개선 할 수 있습니다.
PHP의 gettimeofday () 함수를 통해 파일 읽기 시간을 정확하게 측정하고 측정 된 데이터를 기반으로 해당 성능 최적화를 만들 수 있습니다. 디버깅 단계이든 프로덕션 환경에서든 프로그램의 실행 시간을 이해하는 것이 매우 중요합니다. 이는 성능 병목 현상을 식별하고 개선하는 데 도움이 될 수 있습니다.