😎 » PHP - FAQ » PHP в прикладах » Що працює швидше yield, foreach, for
123 0  

Що працює швидше yield, foreach, for

Використаємо функцію яка створить асоціативний масив на 10000000 випадкових цифр. А інша функція нехай у цьому масиві знайде число 2356.

Що працює швидше yield, foreach, for Застосуємо три різні підходи і подивимось який скрипт:  yield, foreach, for - швидше працює і скільки оперативної памяті він забере.

Щоб умови були однакові функція має шукати однакові неіснуючі числа в масиві, тобто будуть пройдені усі іттерації.


1. Генератори yield (1.3384 сек. : 111.43 KB)

        function createRandomArray()
        {
            for ($i = 0; $i < 10000000; $i++) {
                yield strval(mt_rand(12, 88));
            }
        }

        function findNumber($array)
        {
            foreach ($array as $number) {
                if ($number === "2356") {
                    return $number;
                }
            }
            return null;
        }

        $array = createRandomArray();
        $result = findNumber($array);

        if ($result !== null) {
            echo "Number 2356 found!";
        } else {
            echo "Number 2356 not found.";
        }

2. Цикл foreach (0.7719 сек. : 514.11 MB):

        function createRandomArray() {
            $arr = array();
            for ($i = 0; $i < 10000000; $i++) {
                $arr[] = rand(12, 88);
            }
            return $arr;
        }
        function findNumber($arr) {
            foreach ($arr as $num) {
                if ($num == 2356) {
                    return true;
                }
            }
            return false;
        }
        $randomArr = createRandomArray();
        if (findNumber($randomArr)) {
            echo "Знайдено число 2356 в масиві.";
        } else {
            echo "Число 2356 не знайдено в масиві.";
        }

3. Цикл for (Час виконання: 1.0999 сек. : 514.11 MB)

        function createRandomArray() {
            $arr = array();
            for ($i = 0; $i < 10000000; $i++) {
                $arr[] = rand('12', '88');
            }
            return $arr;
        }
        function findNumber($arr) {
            foreach ($arr as $num) {
                if ($num == 2356) {
                    return true;
                }
            }
            return false;
        }
        $randomArr = createRandomArray();
        if (findNumber($randomArr)) {
            echo "Знайдено число 2356 в масиві.";
        } else {
            echo "Число 2356 не знайдено в масиві.";
        }

Отже:
lol по швидкості перше місце займає - foreach
what по використаню оперативки Yield!


..Експеремент проводився щоб показати Важливість застосуванн Генераторів PHP які доступні з версії 5.5.
- Про генератори на ОФ. сайті


Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023