Почему генератор PHP замедляет, а не ускоряет программу?

Есть проблема в больших данных. Подумал об использовании генераторов в PHP, чтобы не сохранять данные в памяти, но не получил никакого результата:

function generator() {
    for ($i = 1, $iMax = 5000; $i <= $iMax; ++$i) {
        $next = $i+1;
        yield Yii::$app->db->createCommand("select * from schema.table LIMIT 1 OFFSET $next")->queryOne()['id'];
    }
}

$startMemory = memory_get_usage() / (1024**2);
$startTime = microtime(true);

for ($i = 1, $iMax = 5000; $i <= $iMax; ++$i) {
    $next = $i+1;
    echo Yii::$app->db->createCommand("select * from schema.table LIMIT 1 OFFSET $next")->queryOne()['id'];
}

// Тут используем генератор
foreach ($this->generator() as $value) {
    echo $value;
}

$endMemory = (memory_get_usage() - $startMemory) / (1024**2);
$endTime = microtime(true) - $startTime;

Без генератора память изменилась с 2 до 22 мегабайт, а с генератором с 2 до 31 мегабайта. Что я делаю не так?

З.Ы. При тестах код другого метода комментировался.


Ответы (0 шт):