Archiwum kategorii ‘Optymalizacje’

Drupal 7: HipHop for PHP kontra APC – test wydajności

środa, 18 Maj 2011

Na angielskiej wersji mojego bloga opublikowałem wczoraj nowy artykuł porównujący wydajność Drupal 7 w trzech różnych wersjach:

  • tradycyjnego skryptu PHP
  • skryptu PHP zoptymalizowanego modułem APC
  • aplikacji skompilowanej przy pomocy HipHop for PHP

(więcej…)

HipHop for PHP vs APC – Drupal 7 benchmark

środa, 18 Maj 2011

Read this article on the English version of my blog: http://php.webtutor.pl/en/2011/05/17/drupal-hiphop-for-php-vs-apc-benchmark/

Please note: this is the last English article published on the Polish version of my blog. To read my new articles in English, please switch to the English version of this blog: http://php.webtutor.pl/en .

Jak przyspieszyć kompilację kodu PHP w HipHop for PHP – część I: ccache

poniedziałek, 9 Maj 2011

Kompilacja dowolnego programu napisanego w języku PHP zależnie od jego rozmiaru może trwać od kilku do kilkudziesięciu minut.

Dla programistów C, C++ i Java długotrwała kompilacja kodu nie jest niczym niezwykłym. Niestety nie można tego samego powiedzieć o programistach PHP, którzy przywykli do tego, że wszystkie zmiany w kodzie widzą od razu w przeglądarce.

W artykule przedstawię więc jeden ze sposobów, który znacząco skraca czas kompilacji kodu PHP. (więcej…)

Drupal i HipHop for PHP – część I: kompilacja

piątek, 29 Kwiecień 2011

Tuż po upublicznieniu HipHop for PHP w Internecie pojawiło się wiele artykułów na temat tego kompilatora oraz możliwości jakie może zaoferować istniejącym skryptom PHP. Większość z tych tekstów opisywało jednak problemy, które uniemożliwiały skompilowanie dwóch najpopularniejszych systemów CMS Drupal, i Joomla. Operacja kończyła się niepowodzeniem z powodu złej jakości kodu PHP, w który zostały napisane oba systemu.

Informacje zawarte we wspomnianych artykułach są już jednak nieaktualne: od czasu ich publikacji pojawiły się nowe wersje obu systemów CMS, mianowicie Drupal 7 oraz Joomla 1.6.

Czy w nowych wersjach poprawiła się jakość kodu PHP? Czy system Drupal można już bez problemu skompilować? Niniejsza seria artykułów odpowie na te pytania. (więcej…)

Mod_rewrite oraz HipHop for PHP na serwerze Apache

poniedziałek, 25 Kwiecień 2011

Skrypty PHP skompilowane kompilatorem HipHop for PHP mogą bez problemu działać jako serwery HTTP. Nie udostępniają one jednak najpopularniejszej w Internecie metody tworzenia przyjaznych linków, czyli modułu mod_rewrite dostarczanego razem z serwerem Apache.

W tym artykule opiszę najprostszy sposób uruchomienia skompilowanych skryptów PHP z poziomu serwera Apache. (więcej…)

HipHop for PHP – Instalacja na CentOS 5.x

czwartek, 21 Kwiecień 2011

W jednym z poprzednich artykułów opisałem jak przeprowadzić instalację kompilatora HipHop for PHP na systemie Fedora.

Wspomniałem też wtedy o problemach, jakie miał z tym kompilatorem system CentOS 5.5.

W niniejszym artykule pokażę, jak pokonać te trudności i poprawnie zainstalować na tym systemie kompilator HipHop for PHP (więcej…)

Zastępcy eval w PHP: czyli jak szybciej zrobić sobie coś złego

wtorek, 19 Kwiecień 2011

Zapewne wszyscy programiści PHP wiedzą, do czego służy polecenie eval() oraz to, że nie należy się nim posługiwać.

Powodów tego stanu rzeczy jest kilka, przede wszystkim jednak problemem jest bezpieczeństwo kodu i szybkość jego wykonywania. Dodatkową niedogodnością może być też fakt, że polecenie eval() nie jest obsługiwane przez kompilatory języka PHP (np. HipHop for PHP).

Istnieją niestety takie sytuacje, gdy konieczne jest wykonanie dynamiczne utworzonego kodu. W tym artykule skupię się na zagadnieniu wydajności i metodach zastąpienia polecenia eval() szybszymi odpowiednikami.
(więcej…)

Jak obliczyć bieżące zużycie CPU przez skrypt PHP?

wtorek, 12 Kwiecień 2011

Istnieje wiele skryptów obliczających czas wykonywania programu, jego zużycie pamięci, a nawet ilość zapytań wysłanych do baz danych.

Wszystkie wymienione przeze mnie wskaźniki są niezwykle istotne podczas testowania kodu w celu jego późniejszej optymalizacji. Mi jednak brakuje jeszcze jednego parametru: procentowego zużycia CPU przez skrypt PHP! (więcej…)

HipHop for PHP: Test wydajności – rewanż PHP

poniedziałek, 4 Kwiecień 2011

W poprzednim artykule opisałem wydajność kompilatora HipHop for PHP przedstawiając wyniki sześciu testów PHP zaczerpniętych z serwisu shootout.alioth.debian.org. Nie był to jednak kompletny zestaw skryptów możliwych do zbadania.

Wspomniane testy zostały wtedy wyselekcjonowane w taki sposób, by uniknąć potencjalnych niekompatybilności związanych z kompilacją skryptu PHP do języka C++, które zostały opisane w dokumentacji HipHop for PHP. W przypadku wspomnianych skryptów problematyczne okazało się pobieranie danych wejściowych ze strumienia STDIN (testy: reverse-complement, regex-dna, k-nucleotide), oraz brak wsparcia dla biblioteki gmp (test pidigits).

Zgodnie z prośbą czytelników przedstawiam jednak wyniki dwóch kolejnych testów: regex-dna oraz k-nucleotide.
(więcej…)

HipHop for PHP: Test wydajności

czwartek, 31 Marzec 2011

  click here for english version

Benchmark iconNa stronie shootout.alioth.debian.org znajduje się bardzo ciekawy benchmark porównujący ze sobą wydajność wielu różnych języków programowania. O ile daleki jestem od prowadzenia dyskusji na temat wyższości jednego języka nad drugim, uznałem, że ciekawie byłoby wykonać mały test prędkości pomiędzy PHP a… PHP (skompilowanym przy pomocy HipHop for PHP).

Mam nadzieję, że testy które przedstawiam poniżej okażą się pomocne w udzieleniu odpowiedzi, jak bardzo PHP przyspiesza po skompilowaniu, oraz czy HipHop for PHP jest faktycznie tak wydajny, jak twierdzą developerzy Facebooka. (więcej…)

HipHop for PHP – Instalacja na Fedora 12 – 15

czwartek, 31 Marzec 2011

Minął już chyba rok, odkąd Facebook przedstawił publicznie swój wynalazek pozwalający na kompilowanie kodu PHP do plików binarnych.

Od początku swojego istnienia HipHop for PHP krytykowany był za problemy z konfiguracją oraz instalacją na różnych systemach operacyjnych. Choć sam Facebook oficjalnie wspiera swój produkt na systemach CentOS (darmowa wersja RedHata), oraz Fedora, to nawet na nich często instalacja kończyła się niepowodzeniem.

Z tego też powodu wsparty odpowiednią literaturą postanowiłem opisać dokładnie proces instalacji na jednym ze wspieranych przez Facebook dystrybucjach Linux, czyli na tytułowej Fedorze . (więcej…)

Co najbardziej spowalnia skrypty PHP?

sobota, 26 Marzec 2011

Pierwszą, oczywistą przyczyną jest to, że język PHP, jest językiem interpretowanym, a nie kompilowanym. Nie tłumaczy to jednak kiepskich wyników porównawczych z innymi językami tego samego typu, takimi jak Perl czy Python, które w wielu scenariuszach wykazują o wiele większą wydajnością.

Co sprawia, że język PHP jest od nich wolniejszy? (więcej…)

StringBuilder w PHP

czwartek, 24 Marzec 2011

Jak dobrze wiadomo, PHP nie jest wyposażony w mechanizm typu StringBuilder znany z innych języków jak C# lub JAVA. W Internecie znaleźć można wiele dyskusji na to, czy taka funkcjonalność jest w ogóle do czegoś potrzebna, oraz gotowe implementacje jako dowody na to, że wydajność nie ulega zmianie.

Ja spróbuję przedstawić dowody odwrotne: mechanizm StringBuilder można w PHP zaimplementować, co korzystnie wpływa na wydajność skryptu. (więcej…)