생성기를 사용하거나 사용하지 않고 메모리 사용량을 시각화하면 효율성 이점을 이해하는 데 도움이 될 수 있습니다. 다음은 두 가지 시나리오의 메모리 사용량을 비교한 것입니다.
0부터 999,999까지의 숫자 배열을 반환하는 간단한 함수가 있다고 가정해 보겠습니다. 모든 데이터를 한번에 메모리에 로드하는 기능입니다.
<?php function getNumbersArray() { $numbers = []; for ($i = 0; $i < 1000000; $i++) { $numbers[] = $i; } return $numbers; } $numbers = getNumbersArray(); foreach ($numbers as $number) { // Process each number } ?>
getNumbersArray 함수가 호출되는 경우:
| Memory Usage Without Generators | |------------------------------------------------------| | Start | * | | | ** | | | *** | | | **** | | | ***** | | | ****** | | | ******* | | ... | ******************************************| | End | ******************************************| |------------------------------------------------------|
이제 생성기 기능을 사용하여 한 번에 하나씩 숫자를 생성합니다.
<?php function numberGenerator() { for ($i = 0; $i < 1000000; $i++) { yield $i; } } foreach (numberGenerator() as $number) { // Process each number } ?>
생성기 함수 numberGenerator가 호출되는 경우:
| Memory Usage With Generators | |------------------------------------------------------| | Start | * | | | * | | | * | | | * | | | * | | | * | | | * | | ... | * | | End | * | |------------------------------------------------------|
생성기는 한 번에 하나의 항목을 생성하고 스크립트 실행 전체에서 낮은 메모리 사용량을 유지함으로써 특히 대규모 데이터 세트의 경우 상당한 메모리 효율성 이점을 제공합니다.
위 내용은 ChatGPT는 대규모 데이터 세트에 대해 PHP 생성기가 있는 경우와 없는 경우의 메모리 사용량을 비교했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!