Ottimizzare le performance usando Span e il metodo Split

di Stefano Mostarda, in .NET Framework,

Uno dei motivi per cui ASP.NET ha delle prestazioni elevate è l'utilizzo a degli Span. Grazie a questa tecnica si possono eseguire molte operazioni sulle stringhe senza dover allocare nuova memoria e qesto torna molto utile quando si devono parsare le intestazioni di una richiesta HTTP o quando si deve effettuare il parsing di un JSON (operazioni comuni in ASP.NET). Grazie alla minor allocazione, abbiamo meno cicli di garbage collection e quindi il processore passa meno tempo ad eseguire codice "di sistema" e più tempo ad eseguire codice "applicativo"

Un tipico caso in cui possiamo utilizzare gli Span anche noi per migliorare le performance del nostro codice è nel parsing di file. Supponiamo di dover parsare un file csv o un qualunque file con campi delimitati da un carattere predefinito. Se riusciamo a leggere il file non come stringa, ma come span di caratteri, possiamo estrarre i campi di ogni riga semplicemente usando il metodo Split. Questo metodo splitta lo span originale in tanti oggetti Range senza quindi allocare nuove stringhe come invece farebbe il metodo omonimo della classe String. In questo snippet vediamo se esiste un certo valore in una riga che usa il carattere ";" come separatore.

public bool Contains(ReadOnlySpan<char> span, string item)
{
    foreach (Range segment in span.Split(';'))
    {
        if (span[segment].SequenceEquals(item))
            return true;
    }
    
    return false;
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi