"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ChatGPT는 대규모 데이터 세트에 대해 PHP 생성기가 있는 경우와 없는 경우의 메모리 사용량을 비교했습니다.

ChatGPT는 대규모 데이터 세트에 대해 PHP 생성기가 있는 경우와 없는 경우의 메모리 사용량을 비교했습니다.

2024-08-05에 게시됨
검색:993

ChatGPT compared the memory usage with and without PHP generators for large datasets.

생성기를 사용하거나 사용하지 않고 메모리 사용량을 시각화하면 효율성 이점을 이해하는 데 도움이 될 수 있습니다. 다음은 두 가지 시나리오의 메모리 사용량을 비교한 것입니다.

  1. 생성기를 사용하지 않고 (모든 데이터를 한 번에 메모리에 로드).
  2. 생성기 사용(한 번에 하나의 항목 로드).

시나리오 1: 발전기 없음

0부터 999,999까지의 숫자 배열을 반환하는 간단한 함수가 있다고 가정해 보겠습니다. 이 함수는 모든 데이터를 한번에 메모리에 로드합니다.

메모리 사용량(생성기 제외)

getNumbersArray 함수가 호출될 때:

  • 초기 메모리: 낮음, 기능 및 환경 설정만 메모리에 있습니다.
  • 실행 중: 루프가 실행됨에 따라 메모리 사용량이 선형적으로 증가하여 배열에 1,000,000개의 숫자가 모두 포함됩니다.
  • 최대 메모리: 매우 높으며 모든 데이터를 메모리에 동시에 보유합니다.
  • 실행 후: 스크립트가 끝나거나 배열이 명시적으로 설정 해제될 때까지 메모리가 높은 상태로 유지됩니다.
|            Memory Usage Without Generators           |
|------------------------------------------------------|
| Start    | *                                         |
|          | **                                        |
|          | ***                                       |
|          | ****                                      |
|          | *****                                     |
|          | ******                                    |
|          | *******                                   |
| ...      | ******************************************|
| End      | ******************************************|
|------------------------------------------------------|

시나리오 2: 생성기 사용

이제 생성기 함수를 사용하여 한 번에 하나씩 숫자를 생성합니다.

메모리 사용량(생성기 사용)

생성기 함수 numberGenerator가 호출될 때:

  • 초기 메모리: 낮음, 기능 및 환경 설정만 메모리에 있습니다.
  • 실행 중: 한 번에 하나의 숫자만 메모리에 보관되므로 메모리 사용량이 낮게 유지됩니다.
  • 최대 메모리: 낮음, 단 하나의 항목과 생성기에 대한 오버헤드만 포함됩니다.
  • 실행 후: 반복이 끝난 후 메모리 사용량이 즉시 감소합니다.
|            Memory Usage With Generators              |
|------------------------------------------------------|
| Start    | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
| ...      | *                                         |
| End      | *                                         |
|------------------------------------------------------|

요약

  • 생성기 없음: 메모리 사용량은 데이터 세트의 크기에 따라 증가하고 스크립트 실행 전반에 걸쳐 높게 유지됩니다.
  • 생성기 사용: 한 번에 하나의 항목만 처리되므로 데이터 세트 크기에 관계없이 메모리 사용량이 일정하고 낮게 유지됩니다.

생성기는 한 번에 하나의 항목을 생성하고 스크립트 실행 전체에서 낮은 메모리 사용량을 유지함으로써 특히 대규모 데이터 세트의 경우 상당한 메모리 효율성 이점을 제공합니다.

릴리스 선언문 이 기사는 https://dev.to/saaberdev/chatgpt-explained-how-we-can-optimize-memory-usage-by-using-php-generators-for-large-datasets-4e5h?1에서 재현됩니다. 침해가 있는 경우, 삭제하려면 [email protected]으로 문의하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3