
Optimización del rendimiento
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, mejores prácticas de rendimiento
1¿Cuál es la principal ventaja de BenchmarkDotNet frente a un simple Stopwatch para medir el rendimiento?
¿Cuál es la principal ventaja de BenchmarkDotNet frente a un simple Stopwatch para medir el rendimiento?
Respuesta
BenchmarkDotNet realiza warm-ups, mide múltiples iteraciones con estabilización estadística y evita los sesgos del JIT y del GC. Un Stopwatch simple puede dar resultados no representativos porque no controla estos factores. BenchmarkDotNet también proporciona métricas detalladas como las asignaciones de memoria por operación.
2¿Qué herramienta de Microsoft se recomienda para analizar las asignaciones de memoria e identificar las fugas de memoria en producción?
¿Qué herramienta de Microsoft se recomienda para analizar las asignaciones de memoria e identificar las fugas de memoria en producción?
Respuesta
dotMemory de JetBrains y PerfView de Microsoft son las herramientas recomendadas para perfilar la memoria en .NET. PerfView es gratuito, open-source y puede analizar las heap allocations, los stack traces y los eventos del GC. Es especialmente adecuado para diagnosticar fugas de memoria en producción sin un overhead significativo.
3¿Cómo identificar las asignaciones de memoria ocultas en un método LINQ como FirstOrDefault()?
¿Cómo identificar las asignaciones de memoria ocultas en un método LINQ como FirstOrDefault()?
Respuesta
Usar BenchmarkDotNet con el atributo MemoryDiagnoser permite ver las asignaciones por operación. Las lambdas de LINQ crean asignaciones ocultas mediante delegates. Reemplazarlas por un simple bucle foreach elimina estas asignaciones. PerfView también puede capturar los stack traces de asignaciones para identificar las fuentes.
En BenchmarkDotNet, ¿qué atributo usar para medir el rendimiento de CPU e identificar los hotspots de código?
¿Cómo interpretar un resultado de BenchmarkDotNet que muestra Mean: 125.3 ns, StdDev: 45.2 ns?
+19 preguntas de entrevista
Otros temas de entrevista .NET
Fundamentos de C#
LINQ & Delegates
Fundamentos del lenguaje C#
Fundamentos de ASP.NET Core
Ciclo de vida de las solicitudes en ASP.NET Core
Configuration & Settings
Ciclo de vida de la aplicación
Dependency Injection
Entity Framework Core
Minimal APIs
Desarrollo de Web API
Async en ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serialización JSON
Entity Framework Core avanzado
Características avanzadas de C#
Clean Architecture
Logging, Monitoring & Observability
Pruebas unitarias y xUnit
Pruebas de integración
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programación reactiva
Async/await & Patterns
.NET Design Patterns
Seguridad y Best Practices
SignalR y tiempo real
Arquitectura de Microservicios
Domina .NET para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis