⊗ppSpOtRHO 73 of 83 menu

Optimalizace opakování náročných operací v PHP

V předchozí lekci opakovaná volání funkcí ve skutečnosti zabrala velmi málo času a naše optimalizace by ušetřila ne příliš mnoho. Avšak, vše bude mnohem horší, pokud budeme několikrát provádět volání "těžké" funkce, která vykonává dostatečně dlouhou dobu.

Předpokládejme například, že máme funkci, která najde dělitele čísla:

<?php function getDivisors($num) { $result = []; for ($i = 1; $i <= $num; $i++) { if ($num % $i == 0) { $result[] = $i; } } return $result; } ?>

Je zřejmé, že tato funkce je dostatečně "těžká". Proto by bylo špatným nápadem napsat takový kód:

<?php $num = 123456; if (array_sum(getDivisors($num)) >= 10 and array_sum(getDivisors($num)) <= 100) { } else { } ?>

Lepší je samozřejmě provést "těžkou" operaci jedenkrát a výsledek zapsat do proměnné, a potom použít tuto proměnnou na potřebných místech:

<?php $num = 123456; $sum = array_sum(getDivisors($num)); if ($sum >= 10 and $sum <= 100) { } else { } ?>

Optimalizujte níže uvedený kód:

<?php $num = 1233456789; if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) { echo 'správně'; } else { echo 'nesprávně'; } function getSumSquare($num) { $digits = explode('', $num); $sum = 0; foreach ($digits as $digit) { $sum += $digit * $digit; } return $digit; } ?>
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout