.NET

Optymalizacja wydajności

Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, najlepsze praktyki wydajnościowe

22 pytań z rozmów·
Senior
1

Jaka jest główna zaleta BenchmarkDotNet w porównaniu z prostym Stopwatch przy pomiarze wydajności?

Odpowiedź

BenchmarkDotNet wykonuje warm-upy, mierzy wiele iteracji ze stabilizacją statystyczną i unika błędów JIT oraz GC. Prosty Stopwatch może dawać niereprezentatywne wyniki, ponieważ nie kontroluje tych czynników. BenchmarkDotNet dostarcza też szczegółowe metryki, takie jak alokacje pamięci na operację.

2

Które narzędzie Microsoft jest zalecane do analizy alokacji pamięci i identyfikacji wycieków pamięci na produkcji?

Odpowiedź

dotMemory od JetBrains i PerfView od Microsoftu to zalecane narzędzia do profilowania pamięci w .NET. PerfView jest darmowy, open-source i potrafi analizować alokacje na stercie, stack trace'y oraz zdarzenia GC. Jest szczególnie odpowiedni do diagnozowania wycieków pamięci na produkcji bez znaczącego narzutu.

3

Jak zidentyfikować ukryte alokacje pamięci w metodzie LINQ takiej jak FirstOrDefault()?

Odpowiedź

Użycie BenchmarkDotNet z atrybutem MemoryDiagnoser pokazuje alokacje na operację. Lambdy LINQ tworzą ukryte alokacje poprzez delegaty. Zastąpienie ich prostą pętlą foreach eliminuje te alokacje. PerfView może też przechwytywać stack trace'y alokacji, aby zidentyfikować źródła.

4

W BenchmarkDotNet, którego atrybutu użyć do pomiaru wydajności CPU i identyfikacji hotspotów kodu?

5

Jak interpretować wynik BenchmarkDotNet pokazujący Mean: 125.3 ns, StdDev: 45.2 ns?

+19 pytań z rozmów

Opanuj .NET na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo