მასივში გარდაქმნის ოპტიმიზაცია 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; // გამოიტანს '543321'
?>
შემდეგ კოდში რაღაცა ეძებს სიტყვების რაოდენობას ტექსტში. ოპტიმიზაცია გაუკეთეთ ამ პროგრამისტის გადაწყვეტას:
<?php
$str = 'aaa bbb ccc'; // რაღაც გრძელი სტრიქონი
echo count(explode(' ', $str));
?>