답변:
PHP는 바이트 코드로 컴파일 된 다음 VM과 유사한 것 위에서 해석됩니다. 다른 많은 스크립팅 언어는 Perl과 Ruby를 포함하여 동일한 일반 프로세스를 따릅니다. 예를 들어 BASIC과 같은 전통적인 해석 언어가 아닙니다.
소스를 "축소"하려고하면 효과적인 속도 증가가 없습니다. APC와 같은 바이트 코드 캐시 를 사용하면 크게 증가 할 수 있습니다.
Facebook은 PHP 소스를 C ++ 코드로 변환하는 HipHop 이라는 컴파일러를 도입했습니다 . PHP의 거물 중 한 명인 Rasmus Lerdorf는 올해 초 HipHop의 성능 향상을 다루는 Digg 의 프레젠테이션을 했습니다. 간단히 말해, 코드를 최적화하고 바이트 코드 캐시를 사용하는 것보다 빠르지 않습니다. HipHop은 대부분의 사용자에게 과잉입니다.
Facebook은 또한 최근 HipHop을 만드는 작업을 기반으로하는 새로운 가상 머신 인 HHVM을 공개 했습니다 . 여전히 새롭고 일반 대중에게 주요 성능 향상을 제공할지 여부는 명확하지 않습니다.
명시 적으로 명시되어 있는지 확인하기 위해 해당 프레젠테이션 을 전체적으로 읽으십시오 . 또한 Facebook의 xdebug 및 xhprof 와 같은 도구를 사용하여 코드를 벤치마킹하고 프로파일 링하고 병목 현상을 식별하는 다양한 방법을 지적합니다 .
PHP Accelerator
, 또는 같은 opcode 캐시를 사용하기 위해 PHP를 축소하는 아이디어를 포기하십시오 APC
.
또는 다른 것 memcached
이것은 광고보다 답이 아닙니다. 저는 Zend opcode를 정적 타이핑으로 VM에서 실행되도록 변환하는 PHP 확장을 작업 중입니다. 임의의 PHP 코드를 가속화하지 않습니다. 일반 PHP가 허용하는 것보다 훨씬 빠르게 실행되는 코드를 작성할 수 있습니다. 여기서 핵심은 정적 타이핑입니다. 최신 CPU에서 동적 언어는 왼쪽 및 오른쪽 분기 예측 오류를 잡아 먹습니다. PHP 배열이 해시 테이블이라는 사실은 또한 많은 분기 오류 예측, 비효율적 인 캐시 사용, 빈약 한 메모리 프리 페칭, SIMD 최적화 없음 등 높은 비용을 부과합니다. 특히 분기 예측 오류와 캐시 미스는 오늘날의 프로세서에있어 아킬레스 건입니다. 내 작은 VM은 해시 테이블 대신 정적 유형과 C 배열을 사용하여 이러한 문제를 회피합니다. 결과는 대략 10 배 더 빠르게 실행됩니다. 이것은 바이트 코드 해석을 사용하고 있습니다. 확장은 선택적으로 gcc를 통해 함수를 컴파일 할 수 있습니다. 이 경우 2 ~ 5 배 더 빠른 속도를 얻을 수 있습니다.
관심있는 사람을위한 링크는 다음과 같습니다.
https://github.com/chung-leong/qb/wiki
다시 말하지만 확장은 일반적인 PHP 가속기가 아닙니다. 특정 코드를 작성해야합니다.
PHP를 축소 할 필요가 없습니다. 더 나은 성능을 얻으려면 Opcode 캐시를 설치하십시오. 그러나 이상적인 솔루션은 PHP를 5.5 버전 이상으로 업그레이드하는 것입니다. 최신 버전에는 기본적으로 다른 버전보다 성능이 더 좋은 Zend Optimiser라는 opcode 캐시가 있기 때문입니다. http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html .