.NET

Otimização de desempenho

Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, melhores práticas de desempenho

22 perguntas de entrevista·
Senior
1

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.

2

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.

3

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.

4

No BenchmarkDotNet, qual atributo usar para medir o desempenho de CPU e identificar os hotspots de código?

5

Como interpretar um resultado do BenchmarkDotNet mostrando Mean: 125.3 ns, StdDev: 45.2 ns?

+19 perguntas de entrevista

Domine .NET para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis