Почему генератор 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 мегабайта. Что я делаю не так?
З.Ы. При тестах код другого метода комментировался.