Wiem, że możesz minifikować PHP, ale zastanawiam się, czy jest jakiś sens. PHP jest językiem interpretowanym, więc będzie działał trochę wolniej niż język kompilowany. Moje pytanie brzmi: czy klienci zauważyliby widoczną poprawę szybkości wczytywania stron i takie, gdybym zminimalizował PHP?
Czy istnieje sposób na skompilowanie PHP lub czegoś podobnego?
Odpowiedzi:
PHP jest kompilowane do kodu bajtowego, który jest następnie interpretowany na podstawie czegoś przypominającego maszynę wirtualną. Wiele innych języków skryptowych stosuje ten sam ogólny proces, w tym Perl i Ruby. Tak naprawdę nie jest to tradycyjny język interpretowany, jak powiedzmy BASIC.
Nie byłoby efektywnego wzrostu prędkości, gdybyś próbował „zminimalizować” źródło. Znaczny wzrost uzyskasz używając pamięci podręcznej kodu bajtowego, takiej jak APC .
Facebook wprowadził kompilator o nazwie HipHop, który przekształca źródło PHP na kod C ++. Rasmus Lerdorf, jeden z wielkich ludzi PHP, przeprowadził na początku tego roku prezentację dla Digg, która omawia ulepszenia wydajności wprowadzone przez HipHop. Krótko mówiąc, nie jest to dużo szybsze niż optymalizacja kodu i użycie pamięci podręcznej kodu bajtowego. HipHop to przesada dla większości użytkowników.
Facebook zaprezentował również niedawno HHVM , nową maszynę wirtualną opartą na ich pracy nad HipHop. Wciąż jest dość nowy i nie jest jasne, czy zapewni on ogółowi społeczeństwa znaczny wzrost wydajności.
Aby upewnić się, że zostało to wyraźnie określone, przeczytaj tę prezentację w całości. Wskazuje liczne sposoby testowania porównawczego i profilowania kodu oraz identyfikowania wąskich gardeł za pomocą narzędzi takich jak xdebug i xhprof , również z Facebooka.
źródło
Zrezygnuj z pomniejszania PHP na rzecz użycia pamięci podręcznej kodu operacji, na przykład
PHP Accelerator
lubAPC
.Albo coś innego
memcached
źródło
Przy pewnym przepisywaniu (krótsze nazwy zmiennych) można zaoszczędzić kilka bajtów pamięci, ale to też rzadko ma znaczenie.
Jednak projektuję niektóre z moich aplikacji w sposób, który pozwala łączyć skrypty razem. Dzięki
php -w
niemu można go znacznie zmniejszyć, dodając niewielki wzrost prędkości przy uruchamianiu skryptu. Na serwerze obsługującym opcode zapisuje to jednak tylko kilka sprawdzeń czasu plików.źródło
To mniej odpowiedź niż reklama. Pracuję nad rozszerzeniem PHP, które tłumaczy kody operacyjne Zend do uruchamiania na maszynie wirtualnej ze statycznym typowaniem. Nie przyspiesza dowolnego kodu PHP. Pozwala na pisanie kodu działającego znacznie szybciej niż pozwala na to zwykły PHP. Kluczem jest tutaj statyczne pisanie. Na nowoczesnym procesorze dynamiczny język zjada karę za błędne przewidywanie gałęzi z lewej i prawej strony. Fakt, że tablice PHP są tablicami mieszającymi, również wiąże się z wysokimi kosztami: wiele błędnych przewidywań dotyczących gałęzi, nieefektywne wykorzystanie pamięci podręcznej, słabe wstępne pobieranie pamięci i brak jakiejkolwiek optymalizacji SIMD. W szczególności błędne przewidywania gałęzi i pomyłki w pamięci podręcznej są piętą achillesową dzisiejszych procesorów. Moja mała maszyna wirtualna omija ten problem, używając typów statycznych i tablicy C zamiast tabeli skrótów. W rezultacie działa mniej więcej dziesięć razy szybciej. To używa interpretacji kodu bajtowego. Rozszerzenie może opcjonalnie skompilować funkcję za pomocą gcc. W takim przypadku uzyskasz od dwóch do pięciu razy większą prędkość.
Oto link dla wszystkich zainteresowanych:
https://github.com/chung-leong/qb/wiki
Ponownie, rozszerzenie nie jest ogólnym akceleratorem PHP. Musisz napisać odpowiedni dla niego kod.
źródło
Tak, jest jeden (nietechniczny) punkt.
Twoja firma hostingowa może szpiegować Twój kod na swoim serwerze. Jeśli go zminimalizujesz i uszlachetnisz, szpiegom trudniej będzie ukraść twoje pomysły.
Jednym z powodów minimalizowania i upiększania php może być ochrona przed szpiegami. Myślę, że brzydki kod powinien być jednym krokiem w automatycznym wdrożeniu.
źródło
Istnieją kompilatory PHP ... zobacz listę w poprzednim pytaniu ; ale (chyba że jesteś wielkości Facebooka lub chcesz, aby Twoja aplikacja działała po stronie klienta) generalnie są o wiele bardziej kłopotliwi niż są tego warci
Proste buforowanie kodu operacyjnego zapewni większe korzyści za włożony wysiłek. Lub sprofiluj swój kod, aby zidentyfikować wąskie gardła, a następnie zoptymalizuj go.
źródło
Nie musisz zmniejszać PHP. Aby uzyskać lepszą wydajność, zainstaluj pamięć podręczną Opcode; ale idealnym rozwiązaniem byłoby uaktualnienie PHP do wersji 5.5 lub nowszej, ponieważ nowsze wersje mają domyślnie pamięć podręczną kodu operacji o nazwie Zend Optimiser, która działa lepiej niż inne http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html .
źródło