Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24478|Respuesta: 2

[Fuente] Optimización de rendimiento en C#: Lazy inicializa lazy con <T>un delay

[Copiar enlace]
Publicado en 17/6/2019 16:17:17 | | | |
1. Visión general

Crear un objeto requiere mucho consumo, y este objeto puede no usarse durante la ejecución, así que para evitar crear el objeto cada vez, entra en juego la inicialización perezosa (también llamada instanciación perezosa).

La inicialización retardada ocurre en . NET 4.0, que se utiliza principalmente para mejorar el rendimiento, evitar cálculos desperdiciados y reducir los requisitos de memoria del programa. También puede llamarse carga bajo demanda.

2. Gramática básica


3. Implementa con ejemplos

Empieza creando una clase para estudiantes con el siguiente código:

Crea un programa de consola con el siguiente código:

Después de establecer el punto de interrupción para depurar, descubrí que tras la nueva información, el valor de IsValueCreated de Student era falso y el valor de valor era nulo



Entonces, al llamar a la propiedad Nombre, el valor de IsValueCreated de student es verdadero, y el valor de valor deja de ser nulo



Resultado de la carrera:



Se puede ver que el Estudiante solo se inicializa cuando se genera el atributo Nombre, es decir, se inicializa cuando se usa por primera vez, para lograr el propósito de reducir el consumo.

Este ejemplo es sencillo y la <T>forma más básica de usar Lazy. También podemos usar<T> la función de sobrecarga de Lazy,<T> Lazy (Func<T>), para pasar un delegado con un valor de retorno y establecer el valor de propiedad del objeto de inicialización de Lazy.

Resultado de la carrera:



Nota:<T> La inicialización de objetos perezosos es segura para hilos por defecto, y en un entorno multihilo, el primer hilo que accede<T> a la propiedad Valor del objeto perezoso inicializará el objeto perezoso<T>, y los hilos de acceso posteriores usarán los datos inicializados por primera vez.

4. Escenarios de aplicación

Hay un objeto que tiene mucha sobrecarga que crear, y el programa puede que no lo use. Por ejemplo, supongamos que tu programa carga varias instancias de objetos al iniciar, pero solo unas pocas instancias necesitan ejecutarse inmediatamente. Puedes mejorar el rendimiento de arranque de tu programa retrasando la inicialización de objetos innecesarios hasta que se hayan creado los objetos necesarios.






Anterior:Revela algunas verdades sobre la entrevista
Próximo:Manual de usuario de la herramienta de prueba JCSHELL
Publicado en 18/6/2019 18:18:32 |
Bueno, entendido
 Propietario| Publicado en 4/7/2023 19:19:55 |
Cómo es perezoso en C# que mantiene los hilos seguros
https://www.itsvse.com/thread-10621-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com