Զանգվածի վերածելու օպտիմիզացիա PHP-ում
Միշտ չէ, որ անհրաժեշտ է տողը բաժանել զանգվածի, որևէ բան անելու համար:
Դիտարկենք օրինակով:
Հաջորդ օրինակում կոդի հեղինակը ստուգում է,
արդյոք տողում կա 3 թվանշան.
<?php
$str = '12345';
$arr = explode('', $str); // բաժանենք զանգվածի
if (in_array(3, $arr)) {
echo 'կա';
} else {
echo 'չկա';
}
?>
Հեղինակը լավն է - օգտագործում է PHP-ի ներդրված ֆունկցիաները, փոխարենը, որ ստեղծի իր կոճերը:
Սակայն կոդը միևնույն է օպտիմալ չէ. այստեղ կարիք
չկա տողը բաժանել զանգվածի, քանի որ գոյություն ունի
պատրաստի ֆունկցիա strpos, որ կատարում է
որոնում տողում.
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'կա';
} else {
echo 'չկա';
}
?>
Ինչու՞ է այստեղ զանգվածի բաժանելը վատ: Քանի որ, նախ, զանգվածի բաժանելու համար ծախսվում են պրոցեսորի ռեսուրսները, երկրորդ, ստացված զանգվածը կզբաղեցնի տեղ օպերատիվ հիշողությունում (ընդ որում, այն ավելի մեծ կլինի, քան տեղը, որը զբաղեցնում է բուն տողը):
Բարոյականություն. մի բաժանեք տողը զանգվածի, եթե կա եղանակ դա չանելու:
Հաջորդ կոդում ինչ-որ ծրագրավորող շրջում է տողի նիշերը հակառակ հերթականությամբ: Օպտիմիզացրեք այս ծրագրավորողի լուծումը.
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // կցուցադրի '54321'
?>
Հաջորդ կոդում ինչ-որ մեկը փնտրում է բառերի քանակը տեքստում: Օպտիմիզացրեք այս ծրագրավորողի լուծումը.
<?php
$str = 'aaa bbb ccc'; // ինչ-որ երկար տող
echo count(explode(' ', $str));
?>