.NET

Ottimizzazione delle prestazioni

Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, best practice sulle prestazioni

22 domande da colloquio·
Senior
1

Qual è il vantaggio principale di BenchmarkDotNet rispetto a un semplice Stopwatch per misurare le prestazioni?

Risposta

BenchmarkDotNet esegue warm-up, misura più iterazioni con stabilizzazione statistica ed evita i bias del JIT e del GC. Un semplice Stopwatch può dare risultati non rappresentativi perché non controlla questi fattori. BenchmarkDotNet fornisce anche metriche dettagliate come le allocazioni di memoria per operazione.

2

Quale strumento Microsoft è consigliato per analizzare le allocazioni di memoria e identificare i memory leak in produzione?

Risposta

dotMemory di JetBrains e PerfView di Microsoft sono gli strumenti consigliati per il profiling della memoria in .NET. PerfView è gratuito, open-source e può analizzare le heap allocations, gli stack trace e gli eventi del GC. È particolarmente adatto per diagnosticare i memory leak in produzione senza un overhead significativo.

3

Come identificare le allocazioni di memoria nascoste in un metodo LINQ come FirstOrDefault()?

Risposta

Usare BenchmarkDotNet con l'attributo MemoryDiagnoser mostra le allocazioni per operazione. Le lambda LINQ creano allocazioni nascoste tramite delegate. Sostituirle con un semplice ciclo foreach elimina queste allocazioni. PerfView può anche catturare gli stack trace delle allocazioni per identificarne le fonti.

4

In BenchmarkDotNet, quale attributo usare per misurare le prestazioni della CPU e identificare gli hotspot del codice?

5

Come interpretare un risultato BenchmarkDotNet che mostra Mean: 125.3 ns, StdDev: 45.2 ns?

+19 domande da colloquio

Padroneggia .NET per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis