Memvisualisasikan penggunaan memori dengan dan tanpa menggunakan penjana boleh membantu memahami faedah kecekapan. Di bawah ialah perbandingan penggunaan memori dalam dua senario:
Katakan kita mempunyai fungsi mudah yang mengembalikan susunan nombor daripada 0 hingga 999,999. Fungsi ini memuatkan semua data ke dalam memori sekaligus.
<?php function getNumbersArray() { $numbers = []; for ($i = 0; $i < 1000000; $i++) { $numbers[] = $i; } return $numbers; } $numbers = getNumbersArray(); foreach ($numbers as $number) { // Process each number } ?>
Apabila fungsi getNumbersArray dipanggil:
| Memory Usage Without Generators | |------------------------------------------------------| | Start | * | | | ** | | | *** | | | **** | | | ***** | | | ****** | | | ******* | | ... | ******************************************| | End | ******************************************| |------------------------------------------------------|
Kini, kami menggunakan fungsi penjana untuk menghasilkan nombor satu demi satu.
<?php function numberGenerator() { for ($i = 0; $i < 1000000; $i++) { yield $i; } } foreach (numberGenerator() as $number) { // Process each number } ?>
Apabila fungsi penjana numberGenerator dipanggil:
| Memory Usage With Generators | |------------------------------------------------------| | Start | * | | | * | | | * | | | * | | | * | | | * | | | * | | ... | * | | End | * | |------------------------------------------------------|
Penjana memberikan faedah kecekapan memori yang ketara, terutamanya untuk set data yang besar, dengan menghasilkan satu item pada satu masa dan mengekalkan penggunaan memori yang rendah sepanjang pelaksanaan skrip.
Atas ialah kandungan terperinci ChatGPT membandingkan penggunaan memori dengan dan tanpa penjana PHP untuk set data yang besar.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!