Nello script precedente (https://www.aspitalia.com/script/1322/Diagnosticare-Problemi-Performance-MiniProfiler-ASP.NET-Core-MVC.aspx) abbiamo introdotto MiniProfiler e abbiamo visto come utilizzarlo per investigare colli di bottiglia nell'accesso al database, sia con Entity Framework che con ADO.NET. In realtà questo tool è molto versatile, e possiamo applicare i medesimi concetti anche ad altri scenari.
Se abbiamo del codice che fa un uso intensivo della CPU, anche in questo caso possiamo usare il metodo MiniProfiler.Current.Step per tracciare il suo tempo di esecuzione. Eventualmente possiamo annidare varie invocazioni per misurare individualmente i vari step operativi della nostra routine.
using (MiniProfiler.Current.Step("Rimozione dello sfondo da un'immagine")) { using (MiniProfiler.Current.Step("Identifico quali pixel appartengono allo sfondo")) { //Codice del primo passo } using (MiniProfiler.Current.Step("Rendo trasparenti i pixel identificati")) { //Codice del secondo passo } }
Le durate di ciascun passo sono indicate separatamente. Potrebbe essere necessario cliccare il link "show trivial" per mostrare tutti i passi, anche quelli di breve durata.

Se grazie a MiniProfiler scopriamo che il codice richiede troppo tempo, potremmo pensare di parallelizzare il lavoro sui vari core, così da ridurre i tempi di attesa per l'utente.
Infine, possiamo anche profilare del codice che si trova nelle view Razor, aggiungendo il tag helper profile.
<profile name="Rendering dell'elenco prodotti"> @foreach(var product in Model.Products) { <div><!-- Codice HTML --></div> } </profile>
Usare uno strumento come MiniProfiler può essere utile per costruire applicazioni migliori, perché ci aiutano a evidenziare le eventuali inefficienze. Gli autori di MiniProfiler (del team di Stack Overflow) hanno messo a disposizione un'applicazione ASP.NET Core di esempio che mostra vari altri scenari di utilizzo: https://github.com/MiniProfiler/dotnet/tree/master/samples/Samples.AspNetCore
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare la documentazione Swagger di ASP.NET Core Web API
Creare librerie di View riutilizzabili con Razor Class Library in ASP.NET Core
Gestire interfacce multiple nella DI di ASP.NET Core
Impostare le policy CORS con Azure API Management
Serverless apps with Azure Functions v2 and .NET Core (.NET Conference Italia 2018)
Implementare un blocco territoriale in ASP.NET Core
Compilare dinamicamente le view in ASP.NET Core 3.0
Certificati gratuiti e con rinnovo automatico con Azure App Service
Supportare l'autenticazione basata su API Key in ASP.NET Core
Entity Framework e .NET Core 3
Restringere l'accesso tramite IP ad Azure App Service
Semplificare la gestione degli array in querystring in ASP.NET Core
I più letti di oggi
- Build 2015: segui con noi tutte le novità per gli sviluppatori in diretta da San Francisco
- Real Code Birthday: 10 anni! - Roma
- Community Days 2014 Roma - Roma
- Visual Studio 2015 Preview Live - Online
- Community Days 2019: Birthday Edition - Milano
- ASPItalia.com Future Web Conference: 15 gennaio 2008, L'Aquila
- UrlScan 3.0 in versione RTM
- Velocity arriva alla CTP3