İçeriğe geç

Büyük koleksiyon kopyası (ARCH7086)

Anahtar php.performance.large-collection-copy · Önem info · Kategori performance

Bir generator’ın tamamını iterator_to_array() ile diziye dökmek tüm veriyi belleğe yükler. Yalnızca akış halinde işliyorsanız generator üzerinde doğrudan döngü kurun.

<?php
function sumLines(\Generator $lines): int
{
$all = iterator_to_array($lines);
return array_sum($all);
}
<?php
function sumLines(\Generator $lines): int
{
$total = 0;
foreach ($lines as $line) {
$total += $line;
}
return $total;
}

Yalnızca üzerinde gezinilecek veriyi diziye maddileştirmek yerine generator üzerinde akış halinde işleyin.