Optymalizacje PHP - fakty i mity, cz. 1


O optymalizowaniu skryptów napisanych w PHP bardzo wiele było już napisane. Często sugerowane metody optymalizacji nie są wytłumaczone, ani nie pokazuje się jaki przyrost wydajności uzyskamy przez ich wykorzystywanie. Część optymalizacji zmusza nas do całkowitego przebudowania programów, czego wolelibyśmy uniknąć.

Postaram się więc w tym wpisie przybliżyć 5 metod optymalizacji skryptów, nie ingerujących zbytnio w strukturę aplikacji. Omówię też które naprawdę dają efekt, a które chociaż dają - dają efekt niezauważalny.

1. Korzystanie z funkcji wbudowanych

Może tak od prostszych zagadnień zaczynając. Spróbujmy wypisać zawartość jakiegoś pliku. Wielu od razu napiszę do tego funkcję (a jak, nie będziemy tego robić za każdym razem!)

function print_file($src){
	print fread(fopen($src, 'r'),filesize($src));
}


Oj, źle. Co po niektórzy zaproponują trochę lepsze rozwiązanie.

function print_file($src){
	print file_get_contents($src);
}


Nadal niedobrze. Oczywiście powinniśmy skorzystać z gotowej funkcji readfile($src)! Różnica polega na tym że funkcja readfile, jak czytamy w specyfikacji jest w każdej implementacji parsera zoptymalizowana pod katem systemu operacyjnego, na którym pracuje serwer. Umożliwia to minimalny wzrost wydajności.

Wzrost wydajności: Średni

Czas wykonywania skryptu spadł z 30,748950005 sekund do 1,00542712Czytaj więcej!



[CSS3] Wyszarzenie strony

Czasem musimy wyszarzeć stronę, ale nie ma czasu na zmianę każdego koloru osobno i desaturacje kolorów na wszystkich elementach graficznych. Wtedy z pomocą przychodzi CSS3. Jak? Ano tak:

* {
    -webkit-filter: grayscale(100%);
       -moz-filter: grayscale(100%);
         -o-filter: grayscale(100%);
        -ms-filter: grayscale(100%);
            filter: grayscale(100%); 
}


Ale to nie najlepszy pomysł. W wielu popularnych przeglądarkach (np. Chrome) spowoduje to mocne spowolnienie systemu przy wejściu na taką stronę, ponieważ przy każdej akcji nakładany jest filtr skali szarości na KAŻDY element drzewa DOM.

Dużo lepszym pomysłem jest wyodrębnienie tych elementów strony, które chcemy wyszerzeć, na przykład:

img,#logo,#background,.adds {
    -webkit-filter: grayscale(100%);
       -moz-filter: grayscale(100%);
         -o-filter: grayscale(100%);
        -ms-filter: grayscale(100%);
            filter: grayscale(100%); 
}




OpenGL na Ubuntu czyli dobre złego początki

Wracam do programowania gier 3D. Chociaż nie mam pełnych źródeł projektów, które tworzyłem pod Windowsem w DirectX po roku postanowiłem nie tracić więcej czasu i zacząć trochę inaczej - czyli pod ulubionym Linuxem z OpenGL.

Zbudowanie pierwszego projektu jest zupełnie banalne - zupełnie inaczej niż było z DirectXem. Najprostszą drogą - pobieramy Code::Blocks IDE (dostępne w domyślnych repozytoriach i w Centrum oprogramowania Ubuntu), instalujemy pakiet libgl1-mesa-dev:
sudo apt-get install libgl1-mesa-dev

Teraz wystarczy utworzyć nowy projekt, wybrać szablon OpenGL, odpalić kompilacje... i gotowe!

Ciekawe jak to dalej będzie, poza obszerną dokumentacją OpenGL jest przecież sporo artykułów na warsztacie :)





12
↑
345