Dall'archivio articoli > .NET 7
Le novità di .NET 7 e C# 11
Per poter utilizzare questa funzionalità, devi fare il login o iscriverti.
In occasione della .NET Conf 2022 è stata rilasciata la versione finale di .NET 7. Come ormai Microsoft ci ha abituati negli ultimi anni e in ottemperanza alle promesse fatte, ogni novembre si sussegue una versione del framework di sviluppo universale pensato da Microsoft, adatto per il web, il desktop e il mobile. Questa nuova versione gode di un supporto chiamato Short Term Support (STS) che, diversamente da quello LTS, fornisce correzioni per 18 mesi dal suo rilascio. Questo non significa che .NET 7 non sia di qualità, ma che semplicemente dovremo migrare a .NET 8 (di fatto completamente indolore) per prolungare il supporto e ottenere correzioni utili alle nostre soluzioni.
Potremmo essere indotti a pensare che non ci sia più niente da inserire in .NET, ma invece anche questa versione porta interessanti nuove caratteristiche che vale la pena sfruttare nei vecchi e nuovi applicativi. Se questo non è sufficiente, anche il solo guadagno in termini di prestazioni che possiamo ottenere può giustificare il piccolo sforzo di dover cambiare il TargetFramework nei nostri progetti in net7.0.
Per poter sfruttare questa nuova versione dobbiamo aggiornare Visual Studio 2022 alla versione 17.4 che si occupa di installare anche lo SDK e fornisce l'IDE in grado di supportare la nuova versione di C# 11. Le novità coinvolgono anche ASP.NET Core e Entity Framework per i quali dedichiamo due articoli specifici per poterle approfondire in dettaglio.
Lo sentiamo ripetere ad ogni rilascio, eppure è sempre così. Anche in questa versione, .NET si supera andando ad ottimizzare il runtime e le classi in ogni più piccolo dettaglio per poter guadagnare microsecondi che moltiplicati per il numero di utilizzi vanno a fare la differenza. Lo testimoniano le migliaia di pull request che la community e Microsoft conferiscono mettendo in discussione o riscrivendo intere parti di codice. Lo sforzo è anche concentrato sull'ottimizzare il supporto all'architettura ARM64 che sta diventando sempre più utilizzata, grazie al fatto che fornisce ottime prestazioni e consumi inferiori rispetto ai processori x86-x64. Infatti, nei prossimi anni diventerà piuttosto scontato lavorare su questa architettura in ambito server.
Per chi volesse e armato di pazienta, a questo indirizzo troviamo spiegato in dettaglio tutto ciò che è stato fatto, misurandolo ed ottimizzandolo. Ci sono ottimizzazioni sull'accesso al file, al networking, alla gestione del JSON e dell'XML, ad array e collezioni, a stringhe e alla reflection. Niente è lasciato al caso e per dare l'idea fino a che punto stanno lavorando, ci basta sapere che stanno marcando come sealed tutte le classi interne o private (qualche migliaio), perché permette al runtime di evitare un controllo sull'eventuale classe derivata ed invocare la funzione più velocemente.
Anche LINQ guadagna in prestazioni su metodi come OrderBy, Min, Max, Average sfruttando i vector che le CPU possono supportare in fase di esecuzione, permettendo così di implementare algoritmi più efficienti sui numeri che vanno a trattare più valori contemporaneamente invece che uno alla volta.
Anche il jitter migliora producendo linguaggio macchina sempre più ottimizzato. Già con .NET Core è stato introdotto il multitier compilation, cioè quel processo che produce del codice velocemente allo startup anche se meno prestazionale, ma che poi vieni sostituito dal nuovo codice macchina che richiede più tempo ma che è più ottimizzato; tutto questo mentre il codice è in esecuzione e in base al numero di invocazioni della funzione. Con .NET 7, grazie al dynamic profile-guided optimization (PGO) e al On-Stack Replacement (OSR) il motore è in grado di riscrivere anche pezzi dello stack per andare ad ottimizzare loop che iterano su molteplici elementi, anche se la funzione viene invocata una volta sola.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.