2011-12-18 5 views
7

MySQL Optimizer가 쿼리를보다 효율적인 쿼리로 변환하는 것과 마찬가지로 PHP와 비슷한 최적화 프로세스가 진행되고 있습니까? PHP가 코드를 가져 와서 그것을 분석하고 그것을 실행하기 전에보다 효율적으로 변환하는 곳은 어디입니까?PHP에 최적화 기능이 내장되어 있습니까?

+0

+1 : 이전에 물어 보지 못한 것이 놀랍지 만. –

+0

관련 : http://stackoverflow.com/questions/1407603/what-makes-php-slower-than-java-or-c – Mat

답변

4

PHP는 소스 코드를 opcode 스트림 (실행 된 후)으로 변환하는 싱글 패스 컴파일 프로세스를 사용합니다. 컴파일은 단일 패스 만 사용하고 AST를 작성하지 않기 때문에 다른 언어에서 일반적으로 수행되는 대부분의 최적화는 구현하기가 매우 어려울 수 있습니다. 분명히 몇 가지 간단한 최적화 (내부 문자열과 사전 해싱 기호와 같은)가 있지만, 대부분의 "고급"최적화는 단순히 불가능합니다.

덧붙여서 PHP 코드를 "최적화"하는 가장 간단한 방법은 APC 확장을 사용하여 생성 된 opcode 스트림을 캐시하여 모든 페이지로드시 다시 생성되지 않도록하는 것입니다. 컴파일 프로세스는 리소스가 많이 소모되고 APC를 사용하면 CPU 사용량을 상당히 낮출 수 있습니다.

+0

진지하게, 누군가에게 elses 답을 당신 자신으로 굽는 것은 정말로 정결하지 않습니다. (그리고 아니, 나는 당신에게 투표를하지 않았다.) –

+0

@netcoder 메타를 검색하면 실제로 "답변 도둑질"문제의 여러 변형에서 비롯된 몇 가지 관련 토론이 있습니다. 집계하되, 답을 CW로하십시오. 그것은 많은 일이 발생하고, (자신을 평가할 때) 대답은 CW로 제공된다면 나는 그 일을 잘 처리 할 수 ​​있습니다. –

1

PHP는 해석 과정에서 일부 최적화 작업을 수행하지만, 중요한 것은 인식하지 못합니다.

PHP는 확장 가능하므로 웹 주위에 PHP accelerators이라는 범위가 있습니다. 액셀러레이터는 opcode 캐싱 등을 사용하여 최적화 된 PHP 확장입니다.

해석 (표준 PHP 배포판이하는 것)과 컴파일을 구분하면 여러 PHP 컴파일러를 사용할 수 있습니다. PHP 컴파일러를 통해 PHP 코드를 전달할 수 있습니다. PHP 컴파일러는 코드를 해석하고 실행하는 대신 최적화 된 실행 파일 형식을 만듭니다.

관련 문제