⊗ppSpOtRHO 73 of 83 menu

Оптимизация на повторението на тежки операции в PHP

В предишния урок повторните извиквания на функции всъщност отнемат много малко време и нашата оптимизация ще спести не много. Въпреки това, всичко ще бъде много по-лошо, ако няколко пъти извикаме "тежка" функция, която се изпълнява доста дълго време.

Нека, например, имаме функция, която намира делителите на число:

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

Очевидно е, че тази функция е доста "тежка". Затова лоша идея би било да се напише такъв код:

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

По-добре, разбира се, е да се извърши "тежката" операция веднъж и резултатът да се запише в променлива, а след това тази променлива да се използва на нужните места:

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

Оптимизирайте дадения по-долу код:

<?php $num = 1233456789; if (getSumSquare($num) >= 10 and getSumSquare($num) <= 100) { echo 'вярно'; } else { echo 'невярно'; } function getSumSquare($num) { $digits = explode('', $num); $sum = 0; foreach ($digits as $digit) { $sum += $digit * $digit; } return $digit; } ?>
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне