"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > ChatGPT comparou o uso de memória com e sem geradores PHP para grandes conjuntos de dados.

ChatGPT comparou o uso de memória com e sem geradores PHP para grandes conjuntos de dados.

Publicado em 2024-08-05
Navegar:638

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

Visualizar o uso da memória com e sem o uso de geradores pode ajudar a compreender os benefícios de eficiência. Abaixo está uma comparação do uso de memória em dois cenários:

  1. Sem usar geradores (carregando todos os dados na memória de uma só vez).
  2. Usando geradores (carregando um item por vez).

Cenário 1: Sem Geradores

Digamos que temos uma função simples que retorna uma matriz de números de 0 a 999.999. Esta função carrega todos os dados na memória de uma só vez.


Uso de memória (sem geradores)

Quando a função getNumbersArray é chamada:

  • Memória inicial: Baixa, apenas a configuração da função e do ambiente estão na memória.
  • Durante a execução: À medida que o loop é executado, o uso de memória aumenta linearmente, mantendo todos os 1.000.000 de números em uma matriz.
  • Pico de memória: Muito alto, mantendo todos os dados na memória simultaneamente.
  • Após a execução: a memória permanece alta até que o script termine ou a matriz seja explicitamente desativada.
|            Memory Usage Without Generators           |
|------------------------------------------------------|
| Start    | *                                         |
|          | **                                        |
|          | ***                                       |
|          | ****                                      |
|          | *****                                     |
|          | ******                                    |
|          | *******                                   |
| ...      | ******************************************|
| End      | ******************************************|
|------------------------------------------------------|

Cenário 2: Usando Geradores

Agora, usamos uma função geradora para gerar números, um de cada vez.


Uso de memória (usando geradores)

Quando a função geradora numberGenerator é chamada:

  • Memória inicial: Baixa, apenas a configuração da função e do ambiente estão na memória.
  • Durante a execução: o uso da memória permanece baixo, pois apenas um número é mantido na memória por vez.
  • Pico de memória: Baixo, apenas um item mais sobrecarga para o gerador.
  • Após a execução: o uso da memória cai imediatamente após o término da iteração.
|            Memory Usage With Generators              |
|------------------------------------------------------|
| Start    | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
|          | *                                         |
| ...      | *                                         |
| End      | *                                         |
|------------------------------------------------------|

Resumo

  • Sem Geradores: O uso de memória aumenta com o tamanho do conjunto de dados e permanece alto durante a execução do script.
  • Com Geradores: O uso de memória permanece constante e baixo, independentemente do tamanho do conjunto de dados, porque apenas um item é processado por vez.

Os geradores oferecem benefícios significativos de eficiência de memória, especialmente para grandes conjuntos de dados, gerando um item por vez e mantendo baixo uso de memória durante a execução do script.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/saaberdev/chatgpt-explained-how-we-can-optimize-memory-usage-by-using-php-generators-for-large-datasets-4e5h?1Se houver houver qualquer violação, entre em contato com [email protected] para excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3