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


Ó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?


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.


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.