¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Escribir código .NET eficaz - Perfilado, benchmarking y buenas prácticas

Escribir código .NET eficaz Perfilado, benchmarking y buenas prácticas

Información adicional

  • 5% de descuento en todos los libros
  • Envío gratis a partir de 25 € de compra
  • Versión online gratis por un año

Características

  • Encuadernación rústica - 17 x 21 cm
  • ISBN: 978-2-409-03984-3
  • EAN: 9782409039843
  • Ref. ENI: EIT2ECR

Información adicional

  • 5% de descuento en todos los libros
  • Versión online digital, no descargable
  • Consultable en línea durante 10 años inmediatamente después de la validación del pago.

Características

  • HTML
  • ISBN: 978-2-409-03985-0
  • EAN: 9782409039850
  • Ref. ENI: LNEIT2ECR
Este libro está dirigido tanto a desarrolladores principiantes como experimentados que tienen que enfrentarse a problemas de rendimiento en sus desarrollos con código .NET. En él los autores se dedican a desmitificar el rendimiento del código .NET; no le llevarán por las empinadas cuestas de la puesta a punto, sino que le darán métodos sencillos para perfilar una aplicación y encontrar rápidamente el 20% de los errores del...
Consultar extractos del libro Extracto del libro
  • Nivel Medio a Experto
  • Número de páginas 324 páginas
  • Publicación febrero 2023
  • Nivel Medio a Experto
  • Publicación febrero 2023
Este libro está dirigido tanto a desarrolladores principiantes como experimentados que tienen que enfrentarse a problemas de rendimiento en sus desarrollos con código .NET.

En él los autores se dedican a desmitificar el rendimiento del código .NET; no le llevarán por las empinadas cuestas de la puesta a punto, sino que le darán métodos sencillos para perfilar una aplicación y encontrar rápidamente el 20% de los errores del código que corresponden al 80% de la ralentización. Le mostrarán todas las herramientas teóricas necesarias para saber exactamente dónde buscar los problemas de rendimiento y cómo solucionarlos.

Tras explicar el método y las herramientas, los autores se apoyan en una aplicación de demostración (escrita en C#), basada en un paquete de software industrial real, para mostrarle los métodos de encontrar los cuellos de botella. Esta aplicación ha sido diseñada específicamente para contener una amplia gama de los errores de código que tradicionalmente causan problemas de rendimiento. El libro le mostrará cómo detectar estos diferentes errores en los resultados de una herramienta de «perfilado de .NET», para luego analizarlos en detalle y finalmente solucionarlos. La aplicación corresponde a las arquitecturas web modernas, con un cliente (en Blazor WebAssembly) y una API (en ASP.NET 6). Auxiliándose con Visual Studio 2022, la última versión del IDE de Microsoft, podrá descubrir cómo la herramienta puede extraer métricas que le permiten encontrar los problemas rápidamente.

Encontrará elementos complementarios para su descarga en www.ediciones-eni.com.


¡Nuevo! Rondas de preguntas disponibles con la versión online.

¡Ronda de preguntas
incluida en
la versión online !
  • Ponga a prueba sus conocimientos al final de cada capítulo
  • Evalúe sus competencias

Descargas

Introducción
  1. Prólogo
  2. Los riesgos de la sobreoptimización
  3. El principio del perfilado y el benchmarking
  4. El reto financiero y ecológico
  5. Metodología
  6. Entorno necesario
Principios de perfilado
  1. Una actividad estrictamente regulada
  2. Estabilidad de la plataforma
    1. 1. ¿Por qué esta regla?
    2. 2. ¿Cómo aplicar esta regla?
    3. 3. Extraer los casos particulares
    4. 4. Relación con la mantenibilidad
  3. Neutralidad del entorno
    1. 1. El principio
    2. 2. Virtualización
      1. a. Virtualización pesada
      2. b. Virtualización ligera
    3. 3. Transferencia de la visualización
    4. 4. Efectos de cachés externas
    5. 5. Procesos externos
    6. 6. Servicios diversos
    7. 7. Comparación con la nanotecnología
  4. Establecer objetivos antes del análisis
  5. Mejoras cuantificables
    1. 1. ¿Por qué esta regla?
    2. 2. ¿Cómo aplicar esta regla?
  6. Granularidad descendente
    1. 1. Empecemos con una parábola
    2. 2. Un ejemplo
    3. 3. Advertencia
    4. 4. ¿Quién es responsable?
Perfilar una aplicación .NET
  1. Gestión de la memoria de la parte de .NET
    1. 1. Principios de base
    2. 2. Gestión automatizada de memoria y rendimiento
    3. 3. El caso particular del tiempo real
      1. a. Aclarar un malentendido
      2. b. El no determinismo de los recolectores de basura
    4. 4. Asignar memoria
    5. 5. Cómo nos ayuda .NET
    6. 6. Tipos por valores y referencias
      1. a. Funcionamiento de una pila
      2. b. Regresar al código IL
      3. c. Diferencia entre valor y referencia
      4. d. El caso particular de las estructuras
      5. e. Vincular al rendimiento
    7. 7. Calcular el tamaño de la memoria a asignar
      1. a. El caso del código gestionado al 100 %
      2. b. El caso de objetos sujetos a interoperabilidad
    8. 8. Recolección de la memoria
      1. a. Criterios para la recolección de la memoria
      2. b. Mecanismo de compactación
      3. c. Memoria fija y fragmentación
      4. d. Activar y ejecutar el recolector de basura
      5. e. Noción de generación
      6. f. Impacto de la codificación en el rendimiento
      7. g. Elegir el recolector de basura
    9. 9. Boxing, unboxing y el rendimiento asociado
      1. a. ¿Cuál es el problema?
      2. b. El boxing/unboxing y el rendimiento
      3. c. El remedio
    10. 10. Gestión de la memoria y finalización
      1. a. ¡Dejemos que .NET lo haga!
      2. b. Liberar los recursos externos durante la ejecucióndel GC
      3. c. Funcionamiento del finalizador
      4. d. Liberar los recursos lo antes posible
      5. e. Combinar las dos operaciones
    11. 11. Una observación final
  2. Particularidades de las funciones en línea
    1. 1. Mecanismo de las funciones en línea
    2. 2. Problemática de rendimiento y funciones enlínea (online)
    3. 3. Impacto en los perfiladores
  3. Impacto de la gestión de la memoria en el rendimiento
    1. 1. Una gran diversidad en los impactos
    2. 2. Uso de la memoria virtual
    3. 3. Fugas de memoria
    4. 4. Montón especial para los objetos grandesy la fragmentación de memoria
  4. Otros recursos que hay que vigilar
    1. 1. La memoria no lo es todo
    2. 2. La CPU
    3. 3. Las entradas/salidas
    4. 4. Espacio de disco disponible
    5. 5. Ancho de banda
Aplicación de prueba
  1. Preámbulo
    1. 1. Una migración histórica
  2. Criterios de elección
    1. 1. ¿Por qué esta aplicación?
    2. 2. Utilizar la retroalimentación
    3. 3. La elección de la transparencia
    4. 4. Los límites de la transparencia
  3. Aplicación seleccionada
    1. 1. Campo de uso
    2. 2. Arquitectura
    3. 3. Interfaz
    4. 4. Descripción de la actividad
  4. Detalles de la aplicación
    1. 1. Encontrar la aplicación
    2. 2. Instalar la base de datos
      1. a. Crear manualmente
      2. b. Usar los scripts de generación
    3. 3. Instalar la aplicación
      1. a. Abrir la solución
      2. b. Configurar el proyecto
      3. c. Ejecutar la aplicación
    4. 4. Detalles de los ensambles
    5. 5. Arquitectura del cliente
    6. 6. Estructura de los servicios web
    7. 7. Estructura de la base de datos
  5. Explicación sobre la complejidad de la aplicación
  6. Método recomendado
Presentación de las herramientas
  1. Elegir las herramientas
  2. Visual Studio 2022
    1. 1. Ventana de diagnóstico
    2. 2. Sesión de perfilado
  3. Contadores de rendimiento
    1. 1. Terminología
    2. 2. Windows
    3. 3. Linux y macOS
  4. BenchmarkdotNet
    1. 1. Crear un proyecto de benchmark
    2. 2. Crear un benchmark
    3. 3. Ejecutar el benchmark
  5. Herramientas alternativas
Perfilado
  1. ¿Por dónde empezar?
  2. Escenarios de perfilado
    1. 1. Primer escenario: mostrar los datos de una persona
    2. 2. Segundo escenario: mostrar y editar un contrato
  3. Ejecutar un perfilado
    1. 1. Perfilar la API: primer escenario
      1. a. Ejecutar con el perfilador
      2. b. Primera optimización
      3. c. Prueba de carga
      4. d. Segunda optimización
    2. 2. Refactorizar tras las optimizaciones
      1. a. Mezcla de responsabilidades
      2. b. Suprimir static
      3. c. Usar la inyección de dependencias
      4. d. Perfilar la API: primer escenario tras la refactorización
    3. 3. Perfilar la API: segundo escenario
      1. a. Análisis del consumo de memoria
      2. b. Primera optimización
      3. c. Benchmark de la descompresión del archivode contrato
      4. d. Segunda optimización
      5. e. Implementar el pooling
  4. Conclusión
Más allá del perfilado
  1. Introducción
  2. Pistas de mejora restantes
    1. 1. Introducción
    2. 2. Mejorar la experiencia
    3. 3. Tiempo de carga de la aplicación
    4. 4. Procesamiento asíncrono
    5. 5. Marcar los cambios de aplicación
    6. 6. Algunas cuestiones finales
      1. a. Gestión correcta de las trazas
      2. b. Duplicar las consultas SQL
      3. c. Evitar el exceso de arquitectura
      4. d. Paginar los resultados
      5. e. El recolector de basura lleva tiempo
      6. f. Limitar las excepciones
      7. g. Funciones Equals y GetHashCode
      8. h. AddRange
      9. i. Concatenar cadenas
  3. Tuning
    1. 1. Cuidado
    2. 2. Compilar en release
    3. 3. El cursor de la consistencia
      1. a. BASE en lugar de ACID
      2. b. Un segundo ejemplo
      3. c. Pasar el código de PROFI a BASE
    4. 4. Asincronía globalizada
    5. 5. Utilizar referencias débiles
    6. 6. Cuidado con el tuning extremo
      1. a. Límites del tuning
      2. b. Struct en lugar de class
      3. c. Instanciación tardía y suspensiónprecoz
      4. d. ¿Byte en lugar de int en Enum?
  4. Ir más lejos mediante la rearquitectura
    1. 1. Problemática
    2. 2. Escalabilidad
      1. a. Concepto
      2. b. Modos de escalabilidad
      3. c. Paralelización de los procesamientos
      4. d. Mejores prácticas para la escalabilidad
      5. e. Parallel Linq
    3. 3. Institucionalizar la caché
    4. 4. Pensar Lean/Agile
      1. a. IMDB
      2. b. NoSQL
      3. c. CQRS
      4. d. Prevalencia
    5. 5. Rendimiento de las nuevas arquitecturas
      1. a. Problemática
      2. b. Scale Out
      3. c. Paralelización
      4. d. Movilidad
      5. e. SOA/EDA/ESB
    6. 6. Y para ir aún más lejos
Conclusión
  1. Todo puede causar problemas
  2. Lista de verificación
  3. Las causas de los errores
  4. Codificar ligero
  5. Conclusión
Autor : Christophe MOMMER

Christophe MOMMER

Ingeniero informático y programador apasionado, Christophe MOMMER tiene varias certificaciones de las tecnologías .NET y Azure emitidas por Microsoft. Como freelance, acompaña a los equipos de producción en la creación de código eficaz con un gran valor añadido. En sus libros comparte sus conocimientos para dominar la programación con las tecnologías .NET.
Más información
Autor : Jean-Philippe GOUIGOUX

Jean-Philippe GOUIGOUX

Jean-Philippe GOUIGOUX es ingeniero de sistemas mecánicos (Universidad de Tecnología de Compiègne) y licenciado por la Universidad de Cranfield en Inglaterra (Master of Science, Advanced Automation and Design). Certificado TOGAF, hoy en día director técnico de un grupo de editores de software empresarial, se especializa en la urbanización de los sistemas de información y sabe valorizar su certificación tanto en su entorno profesional con la implementación de API estandarizadas que permiten integraciones potentes y económicas, como en el contexto de la investigación académica sobre arquitecturas de microservicios. Jean-Philippe GOUIGOUX es un Microsoft MVP (Most Valuable Professional) en varias especialidades desde 2011. Interviene regularmente en universidades y conferencias sobre diversos temas de TI, como la gestión de datos, Docker o el rendimiento en .NET. Apasionado por compartir sus conocimientos, es autor de varios libros y vídeos publicados por Ediciones ENI.
Más información

Novedades

Ver más