
Otimização de desempenho
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, melhores práticas de desempenho
1Qual é a principal vantagem do BenchmarkDotNet em relação a um simples Stopwatch para medir o desempenho?
Qual é a principal vantagem do BenchmarkDotNet em relação a um simples Stopwatch para medir o desempenho?
Resposta
O BenchmarkDotNet realiza warm-ups, mede várias iterações com estabilização estatística e evita os vieses do JIT e do GC. Um Stopwatch simples pode dar resultados não representativos porque não controla esses fatores. O BenchmarkDotNet também fornece métricas detalhadas como as alocações de memória por operação.
2Qual ferramenta da Microsoft é recomendada para analisar as alocações de memória e identificar vazamentos de memória em produção?
Qual ferramenta da Microsoft é recomendada para analisar as alocações de memória e identificar vazamentos de memória em produção?
Resposta
O dotMemory da JetBrains e o PerfView da Microsoft são as ferramentas recomendadas para fazer profiling de memória no .NET. O PerfView é gratuito, open-source e pode analisar heap allocations, stack traces e eventos do GC. É especialmente adequado para diagnosticar vazamentos de memória em produção sem overhead significativo.
3Como identificar as alocações de memória ocultas em um método LINQ como FirstOrDefault()?
Como identificar as alocações de memória ocultas em um método LINQ como FirstOrDefault()?
Resposta
Usar o BenchmarkDotNet com o atributo MemoryDiagnoser permite ver as alocações por operação. As lambdas do LINQ criam alocações ocultas via delegates. Substituí-las por um simples loop foreach elimina essas alocações. O PerfView também pode capturar os stack traces de alocações para identificar as fontes.
No BenchmarkDotNet, qual atributo usar para medir o desempenho de CPU e identificar os hotspots de código?
Como interpretar um resultado do BenchmarkDotNet mostrando Mean: 125.3 ns, StdDev: 45.2 ns?
+19 perguntas de entrevista
Outros temas de entrevista .NET
Fundamentos de C#
LINQ & Delegates
Fundamentos da linguagem C#
Fundamentos do ASP.NET Core
Ciclo de vida das requisições no ASP.NET Core
Configuration & Settings
Ciclo de vida da aplicação
Dependency Injection
Entity Framework Core
Minimal APIs
Desenvolvimento de Web API
Async no ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serialização JSON
Entity Framework Core avançado
Recursos avançados do C#
Clean Architecture
Logging, Monitoring & Observability
Testes unitários e xUnit
Testes de integração
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programação reativa
Async/await & Patterns
.NET Design Patterns
Segurança e Best Practices
SignalR e tempo real
Arquitetura de Microsserviços
Domine .NET para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis