
Ottimizzazione delle prestazioni
Profiling, BenchmarkDotNet, memory allocation, boxing/unboxing, Span<T>, best practice sulle prestazioni
1Qual è il vantaggio principale di BenchmarkDotNet rispetto a un semplice Stopwatch per misurare le prestazioni?
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.
2Quale strumento Microsoft è consigliato per analizzare le allocazioni di memoria e identificare i memory leak in produzione?
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.
3Come identificare le allocazioni di memoria nascoste in un metodo LINQ come FirstOrDefault()?
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.
In BenchmarkDotNet, quale attributo usare per misurare le prestazioni della CPU e identificare gli hotspot del codice?
Come interpretare un risultato BenchmarkDotNet che mostra Mean: 125.3 ns, StdDev: 45.2 ns?
+19 domande da colloquio
Altri argomenti di colloquio .NET
Fondamenti di C#
LINQ & Delegates
Fondamenti del linguaggio C#
Fondamenti di ASP.NET Core
Ciclo di vita delle richieste in ASP.NET Core
Configuration & Settings
Ciclo di vita dell'applicazione
Dependency Injection
Entity Framework Core
Minimal APIs
Sviluppo di Web API
Async in ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serializzazione JSON
Entity Framework Core avanzato
Funzionalità avanzate di C#
Clean Architecture
Logging, Monitoring & Observability
Test unitari & xUnit
Test di integrazione
Docker & Containerization
Gestione dei pacchetti NuGet
Memory Management & GC
Programmazione reattiva
Async/await & Pattern
.NET Design Patterns
Sicurezza e Best Practices
SignalR e tempo reale
Architettura a Microservizi
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