O que é carregamento ansioso?

161

O que é carregamento ansioso? Eu codigo em PHP / JS, mas uma resposta mais generalizada será ótima.

Vi muitas perguntas sobre Java e Ruby, mas não conheço nenhuma dessas linguagens e acho difícil ler o código. Eu não sei o que fazer em primeiro lugar

Quamis
fonte
Ótima pergunta.
PA-GW

Respostas:

383

Existem três níveis:

  1. Carregamento ansioso: você faz tudo quando solicitado. Exemplo clássico é quando você multiplica duas matrizes. Você faz todos os cálculos. É um carregamento ansioso;
  2. Carregamento lento: você só faz um cálculo quando necessário. No exemplo anterior, você não faz nenhum cálculo até acessar um elemento da matriz de resultados; e
  3. Carregamento excessivo: é aqui que você tenta antecipar o que o usuário solicitará e pré -carrega .

Espero que faça sentido no contexto que você está vendo.

Deixe-me dar um exemplo "Webby".

Imagine uma página com imagens de sobreposição, como itens de menu ou navegação. Há três maneiras de o carregamento da imagem funcionar nesta página:

  1. Carregue todas as imagens necessárias antes de renderizar a página ( ansiosamente );
  2. Carregue apenas as imagens exibidas na página e carregue as outras se / quando forem necessárias ( lento ); e
  3. Carregue apenas as imagens exibidas na página carregada. Após o carregamento da página, pré-carregue as outras imagens em segundo plano , caso você precise delas ( com muita ansiedade ).

Faz sentido?

cleto
fonte
3
Embora você tenha exagerado indo além da pergunta específica; essa ainda é uma excelente resposta. É curto, simples e dá um exemplo.
Phil
23

É o oposto do carregamento lento , que adia a inicialização de um objeto até que ele seja necessário. O carregamento ágil inicializa um objeto na criação.

Bill the Lizard
fonte
1
Eu poderia acrescentar que esses termos geralmente são usados ​​(e talvez venham?) No contexto de um ORM (Object Relational Mapper), onde você mapeia um objeto para uma tabela em um banco de dados relacional.
1955 Loki
10

Se você imagina ter um objeto chamado pessoa que tem nome, data de nascimento e número de detalhes menos críticos, digamos cor favorita, programa de TV favorito.

Para carregar preguiçosamente essa classe, você a inicializaria, talvez lendo em um banco de dados todos os detalhes mais usados ​​com mais freqüência (por exemplo, nome e data de nascimento) e só lesse os detalhes menos usados ​​quando / se forem necessários, carregamento rápido é o oposto , ou seja, você carrega todos os detalhes ao mesmo tempo.

Os benefícios do carregamento lento são frequentemente citados como efiecency, no entanto, se os objetos não são tão complexos ou a eficácia não é uma preocupação, o carregamento ansioso pode ser usado

Dave D
fonte
7
Quando você pensa sobre isso, o carregamento lento é mais sobre menos memória e mais cálculos em cada chamada de função, enquanto o carregamento rápido usaria mais memória e mais cálculos quando a classe é criada e menos cálculos quando a função é chamada.
1955 Loki
0

Carga antecipada também é usado em angular 8. Significa apenas que o instante em que o aplicativo é carregado dentro do navegador que automaticamente, instantaneamente obter todo o código dentro de um módulo específico, por exemplo, digamos que você acabou de criar um módulo Auth com um Signin e Inscrição componente importado para um módulo de aplicativo .

Por outro lado, há um carregamento lento , ou seja, quando dizemos ao Módulo de Aplicativo que possui o Módulo de Autenticação carregado, para carregar apenas o Módulo de Autenticação em um determinado momento, como quando um usuário vai para uma determinada rota.

Daniel
fonte