Around and About .NET World

Il blog di Marco Minerva
posts - 1612, comments - 2154, trackbacks - 2144

My Links

News


Curriculum Vitae (ITA)

Curriculum Vitae (ENG)

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Le meraviglie dello StringBuilder

Le stringhe in .NET sono oggetti immutabili, quindi se si devono concatenare insieme un numero elevato si stringhe, usare l'operatore + è inefficiente, perché ogni volta verrebbe creata in memoria una nuova stringa. Per ovviare al problema, si deve utilizzare l'oggetto StringBuilder che, come si legge su MSDN, rappresenta una sequenza mutabile di caratteri, quindi ad esso è possibile aggiungere, rimuovere, inserire o sostituire caratteri senza la necessità di istanziare un nuovo oggetto in memoria.

Questa è la favoletta che tutti noi conosciamo... Però quando oggi, facendo debug di codice scritto da altri, ho sostituito tutte le concatenazioni di stringhe con uno StringBuilder ed ho osservato che il tempo di esecuzione è passato da 2 minuti a 3 secondi scarsi, mi si sono illuminati gli occhi Tongue out

Print | posted on mercoledì 19 novembre 2008 18.34 | Filed Under [ C# VB .NET ASP .NET .NET 3.0 Orcas & .NET 3.5 ]

Feedback

Gravatar

# re: Le meraviglie dello StringBuilder

"Knowledge is power" :-)
19/11/2008 20.32 | Davide Mauri
Gravatar

# re: Le meraviglie dello StringBuilder

Parole sante :-D
19/11/2008 21.03 | Marco Minerva
Gravatar

# Le meraviglie dello StringBuilder - Javascript version

Ieri ho portato una testimonianza di come l'utilizzo dello StringBuilder di .NET mi abbia consentito
20/11/2008 15.34 | Around and About .NET World
Gravatar

# re: Le meraviglie dello StringBuilder

Ciao Marco, puoi dire qualcosa di più ?
Hai capito il motivo ?
21/11/2008 23.06 | Andrea Angella
Gravatar

# re: Le meraviglie dello StringBuilder

Intendi sul perché lo StringBuilder consente di avere una tale ottimizzazione? Il motivo è semplice: poiché le stringhe sono oggetti immutabili, ogni volta che se ne concatenano due, con l'operatore +, in memoria viene creato un nuovo oggetto string, quindi viene allocato nuovo spazio per contenerlo... E se le concatenazioni sono molto numerose (ad esempio, all'interno di un ciclo FOR ripetuto molte volte), esse hanno un costo computazionale elevato.

Lo StringBuilder risolve questo problema perché mantiene un buffer in cui letteralmente "appende" porzioni di stringa, senza necessità di creare nuovi oggetti in memoria ad ogni concatenazione (quest'ultima avviene solo quando il buffer dello StringBuilder non è più sufficiente a contenere i dati che vengono inseriti al suo interno).

Per maggiori informazioni, ti consiglio di leggere questo interessante post: blog.briandicroce.com/.../stringbuilder-vs-stri...
21/11/2008 23.15 | marco.minerva@gmail.com
Comments have been closed on this topic.

Powered by: