Iskreno, ocekivao sam vise od jednog clanka o optimizaciji. Prvo, razocaran sam samom benchmark metodom (microtime vs. xdebug na primer). Drugo, autor teksta nije ni zagrebao temu optimizacije, a primeri su uglavnom lose izabrani.
Posto je ovo pro forum a moja malenkost moderator PHP foruma, evo sta je autor u gornjem clanku propustio.
1) "Premature optimization is the root of all evil." (Donald E. Knuth)
2) "When developing applications, the first stage should be to make design your top priority; we should sacrifice performance in favor of a well designed application architecture, and allow our code to be flexible and maintainable. In general, assuming you haven’t made any critical mistakes in your code, performance is really a hardware issue (i.e. you have the option to throw memory,faster processors etc. at the problem);" (Harry Fuecks)
3) "Fast programmers cost more than fast microprocessors!" (Harry Fuecks)
A sada evo i nekih tehnika:
- Most Probably First:
Kod koriscenja if-else uslova, u prvi if uvek treba stavljati uslov koji će se verovatnije izvršiti. Na primer ako imamo $foo_boolean za koji znamo da će prilikom izvršavanja scripta skoro sigurno biti true onda treba :
PHP kôd:
if($foo_boolean === true)
{
//do foo
}
else
{
//doo foo else
}
- For Loop
Kao što Bojan reče, unutar for i while petlji ne stavljati count već van njih. Dakle ne:
PHP kôd:
for($i=0; $i<count($foo_array); $i++)
{
//do foo
}
već
PHP kôd:
$count = count($foo_array);
for($i=0; $i<$count; $i++)
{
//do foo
}
- Lazy Inclusion
Već smo videli koliko "košta" jedan include praznog fajla. Zamislite tek include neke klase (ili više njih). U slučaju da nam to nije neophodno možemo koristiti tzv "Lazy Inclusion":
PHP kôd:
<?php
class LazyInclude
{
var $session;
function LazyInclude()
{
// Include the class as it's needed
require_once 'Session/Session.php';
$this->session = &new Session();
}
}
$li = new LazyInclude();
?>
(primer preuzet iz php anthology 2)
- Use Single Quotes
Negde sam ovo pročitao, a negde i da je to jedna od urbanih legendi. Elem, po nekima, korišćenje jednostrukih navodnika je brže (što donekle ima smisla jer onda engine ne traži escape karaktere).
- Encode Script
Encodovan script (
http://www.zend.com/products/zend_guard) radi oko 100% brže.