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