2010-06-05 3 views
7

구축 대 :PHP 속도 - 대부분의 에코 이러한 방법 중 하나가 출력 빠른 생산한다면 누군가가 알고 있다면 궁금 문자열

Method 1 
for ($i=1;$i<99999;$i++) { 
echo $i, '<br>'; 
} 

또는

Method 2 
for ($i=1;$i<99999;$i++) { 
$string .= $i . '<br>'; 
} 
echo $string; 

감사를 당신이 가지고있는 입력.

+4

누가 신경 쓰나요? 뭔가 있다면 몇 마이크로 초의 차이가있을 것입니다. 속도에 신경 쓰면 Java와 같은 것을 사용하십시오. –

+3

실행 해보시겠습니까? – Amber

+4

속도면에서 C와 비슷한 것을 신경 쓰면 –

답변

3

방법 1은 더 빠를 것 같습니다. 방법 2는 반복의 각 반복에 대해 CONCAT opcode의 묶음을 뱉어 내야하며 매우 긴 문자열은 보낼 준비가 될 때까지 메모리에 내장됩니다. 반면에 방법 1은 루프 당 두 개의 ECHO 코드 일 뿐이고 완전히 완료되기 전에 원하는 경우 PHP/웹 서버에서 클라이언트에 콘텐츠를 플러시 할 수 있습니다.

마이크로 최적화에 관심이있는 경우 opcode 캐시, 캐싱 프록시 또는 hiphop과 같은 값을 사용하면 훨씬 더 나은 성능을 얻을 수 있습니다. 당신은 마이크로 최적화에 완 경우

+0

에서 성능에 관한 좋은 기사가 많이 있지만 출력 작업이 매우 복잡하고 서버 SAPI에 따라 버퍼를 채우는 경우에 따라 두 번째 방법이 버퍼를 만드는 더 저렴한 방법 일 수도 있습니다. 어쩌면 ob_start() 그리고 그 방법을 버퍼링하는 것이 더 낳습니다 ... 많은 변수들이 관련되어 있으며, 모든 접근 방식이 "더 나은"것으로 입증 된 벤치 마크를 제시 할 수 있습니다 :-p하지만 쓸모가 없습니다 ... 프로파일 러를 사용하여 병목 현상을 식별하고 개선하십시오. 마이크로 최적화가 없습니다. – johannes

0

가장 빠른 방법은 output buffering을 사용하고 많은 반향을 일으키는 것입니다. 이 주장을 확인하기위한 벤치 마크는 없습니다.

어쨌든, 이것이 마이크로 최적화의 영역에 있다고 생각합니다. 차이는 아마도 측정 가능하지만 중요하지 않습니다. @Coronatus가 위에서 언급 한 것처럼, 앱이 성능에 민감한 경우 PHP를 사용하지 않을 것입니다!

+1

"앱이 성능에 민감한 경우 PHP를 사용하지 않을 것입니다."페이스 북에 알려주십시오 .-) PHP를 더 잘 만들 수있는 방법은 항상 있습니다. –

+1

@Italy Moav - 그렇습니다.하지만 PHP는 프론트 엔드 작업에만 사용됩니다. 페이스 북에서. 공식 언어에는 C++, Java 및 PHP가 있습니다. 채팅 (가장 리소스 집약적 인)은 C++로 수행됩니다. highscalability.com –

0

, 나는 $ 나뿐만 아니라

4

방법 1은 적은 메모리와 CPU를 사용하고 있습니다 + + 할 + + $의 변화에 ​​보면 "빨리"(이하 서버 부하) 그러나 출력 병목 가장 가능성있는 브라우저는 다운로드 속도입니다.

출력을 버퍼링하지 않으면 브라우저가 스타일 시트, 이미지 등을 더 빨리 다운로드 할 수 있습니다.
더 팁 PHP Optimalization 또는 http://code.google.com/speed/articles/optimizing-php.html에 답변 밖으로

확인 (스크립트는 일부 쿼리 결과를 기다리는 동안).

+0

연결 연산자로 쉼표를 사용하므로 메서드 1이 더 빠르지는 확실하지 않습니다. –

+0

@Alix echo (쉼표)에 여러 매개 변수를 사용하면 먼저 연결 한 다음 에코하는 것보다 빠릅니다. –

+0

예, 두 번째 예제는 더 빠른 연결 연산자 인 '.'를 사용합니다. 일부 벤치 마크에서 '.'대신','를 사용하는 것이 성능을 "상당히"감소시킵니다. –