Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24478|Resposta: 2

[Fonte] Otimização de desempenho em C#: Preguiçoso inicializa preguiçoso com <T>atraso

[Copiar link]
Publicado em 17/06/2019 16:17:17 | | | |
1. Visão geral

É preciso muito consumo para criar um objeto, e esse objeto pode não ser usado durante a execução, então, para evitar criar o objeto toda vez, a inicialização preguiçosa (também chamada de instância preguiçosa) entra em cena.

A inicialização tardia ocorre em . NET 4.0, que é usado principalmente para melhorar o desempenho, evitar desperdiço de cálculo e reduzir os requisitos de memória do programa. Também pode ser chamada de carregamento sob demanda.

2. Gramática básica


3. Implementar com exemplos

Comece criando uma turma para alunos com o seguinte código:

Crie um programa de console com o seguinte código:

Após definir o ponto de interrupção para depuração, descobri que após o novo, o valor do IsValueCreated do Student era falso e o valor do valor era nulo



Então, ao chamar a propriedade Nome, o valor do IsValueCreated do estudante é verdadeiro, e o valor do valor não é mais nulo



Resultado da corrida:



Pode-se ver que o Estudante é inicializado apenas quando o atributo Nome é gerado, ou seja, ele é inicializado quando é usado pela primeira vez, para alcançar o propósito de reduzir o consumo.

Este exemplo é simples e a <T>forma mais básica de usar Lazy. Também podemos usar<T> a função de sobrecarga de Lazy,<T> Lazy (Func<T>), para passar um delegado com um valor de retorno para definir o valor de propriedade do objeto de inicialização preguiçosa.

Resultado da corrida:



Nota:<T> A inicialização de objetos preguiçosos é segura para threads por padrão, e em um ambiente multi-threaded, a primeira thread a acessar<T> a propriedade Valor do objeto Lazy inicializará o objeto Lazy<T> e threads de acesso subsequentes usarão os dados inicializados pela primeira vez.

4. Cenários de aplicação

Existe um objeto que tem muita overhead para criar, e o programa pode não usá-lo. Por exemplo, suponha que seu programa carregue várias instâncias de objetos na inicialização, mas apenas algumas instâncias precisam ser executadas imediatamente. Você pode melhorar o desempenho de inicialização do seu programa adiando a inicialização de objetos desnecessários até que os objetos necessários tenham sido criados.






Anterior:Revele algumas verdades sobre a entrevista
Próximo:Manual do usuário da ferramenta de teste JCSHELL
Publicado em 18/06/2019 18:18:32 |
Bem, entendi
 Senhorio| Publicado em 04/07/2023 19:19:55 |
Como a preguiça em C# mantém os threads seguros
https://www.itsvse.com/thread-10621-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com