|
PHP: MĪTI UN PATIESĪBAS PAR ĀTRDARBĪBU. II DAĻA
Ievietots: 2009-03-09 18:48:45, Skatīts: 1327 reizes
Iepriekšējā rakstā apkopoju, manā skatījumā, visklasiskākos mītus un patiesības par PHP funkciju un valodas konstrukciju ātrdarbību, kurus līdz šim esmu dzirdējis vai redzējis. Šinī rakstā būs vairāki piemēri ar konstrukcijām, kur ātrdarbība (lēndarbība) ne vienmēr ir acīmredzama. Piemēram, zinājāt, ka funkcijā lokālā mainīgā inkrementēšana būs ~2x ātrāka nekā globālā? $var = ‘tests’ būs ātrāks par $var = „tests”, jo php meklēs mainīgos iekš „...”, savukārt iekš ‘...’ nē. Kaut gan pēdējās versijās šī atšķirība vairs nav tik izteikta; a) echo „viens”, „divi”, „trīs” būs ātrāks par echo „viens” . „divi” . „trīs”. T.i. rindas savienošana būs lēnāka, nekā to fragmentu izvadīšana. b) ($x=0; $x < count($array); $x) funkcija count tiks izsaukta katrā cikla solī. Piemēram var lietot šādi -
c) PCRE regex būs ātrāks nekā EREG; d) $str = 'This is a string'; e) Lokālā mainīgā inkrementēšana (funkcijās) būs ~2 reizes ātrāka nekā globālā; f) $this->prop++ būs ~3 reizes lēnāka nekā lokālā mainīgā (t.i. $prop++); g) Nedefinētā mainīgā inkrementēšana būs ~8 reizes lēnāka nekā predefinētā; h) $obj =& new SomeClass() bus ātrāks nekā $obj = new SomeClass(), savukārt $obj =& $someClass->f() būs 2 reizes lēnāks nekā $obj = $someClass->f(); i) while(list($key) = each($aHash)) $aHash[$key] .= "a" būs ātrāks nekā foreach($aHash as $key=>$val) $aHash[$key] .= "a"; j) is_array() definētai vērtībai būs 2..3 reizes ātrāks nekā is_array() nedefinētai vertībai. Līdz ar ko pareizāk būtu lietot - if (isSet($foo) AND is_array($foo)); k) neitīvo konstrukciju lietošana būs ātrāka:
Vairāk var lasīt arī šeit: http://www.hm2k.com/posts/50-php-optimisation-tips-revisited Nobeigumā vēlējos vēlreiz atgādināt, ka šos piemērus nevajadzētu uztvert kā baltu patiesību. Vēl jo vairāk, ka to vai citu funkciju un konstrukciju ātrdarbība var atšķirties no PHP versijas, testa vides un testēšanas veida. Šeit apskatītie piemēri pārsvarā „sasēņoti” interneta tīmeklī un tikai tie, kuriem atradu apstiprinājumu vairāk par vienu vietni vai forumu. Der atcerēties, ka ātrdarbība un universālums (arī koda pārskatāmība) dažkārt ir apgriezti proporcionāli lielumi. Jāizsver arī alternatīvās konstrukcijas pielietojums konkrētā uzdevuma veikšanā. Līdzīgie raksti: Novērtē rakstu ar plezniņām! :) ![]() ![]() ![]() ![]() ![]()
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|