Ogni versione di .NET porta miglioramenti di prestazioni "gratuiti": aggiorni il target framework e il codice esistente diventa più veloce. .NET 10 non fa eccezione.
Meno allocazioni sull'heap
Il JIT analizza meglio se un oggetto "esce" dal metodo che lo crea. Quando un piccolo oggetto, un array di dimensione fissa o un delegate restano locali, il JIT può allocarli sullo stack invece che sull'heap: meno lavoro per il garbage collector e meno pause.
Chiamate più dirette
La devirtualizzazione trasforma chiamate attraverso interfacce in chiamate dirette quando il tipo concreto è noto, aprendo la strada all'inlining. In .NET 10 questo vale anche per molti metodi di interfaccia degli array, molto usati nei cicli foreach su collezioni.
Cicli e istruzioni moderne
Il compilatore riorganizza meglio i cicli, elimina controlli dei limiti ridondanti e sfrutta le istruzioni vettoriali delle CPU recenti, comprese le estensioni AVX10 su x64 e le istruzioni SVE su Arm64.
Come verificarlo sul tuo codice
Non fidarti delle sensazioni: misura. Un benchmark ripetibile prima e dopo l'aggiornamento ti dice esattamente quanto guadagni.
[MemoryDiagnoser]
public class SommaBenchmark
{
private readonly int[] _dati = Enumerable.Range(0, 10_000).ToArray();
[Benchmark]
public int Somma()
{
var totale = 0;
foreach (var n in _dati) totale += n;
return totale;
}
}
Esegui lo stesso benchmark con net8.0 e net10.0 come target e confronta tempi e allocazioni: è il modo più onesto per decidere se e quanto conviene migrare.
Commenti (0)
Nessun commento ancora.