oggi volevo condividere con voi uno di quegli "errori" che comunemente si commettono nella programmazione .NET. La concatenazione di stringhe. Spesso, per distrazione o per fretta, la concatenazione di stringhe viene fatta in ambiente .NET usando l'operatore "+". Il risultato che si ottiene è ovviamente quello desiderato, ma potrebbe avere gravi ripercussioni sulle performance del nostro applicativo. Mi spiego meglio:
- Nel framework .NET le stringhe sono oggetti IMMUTABILI e pertanto le operazioni di modifica ad esse applicate non modificano la stringa di partenza, ma ne creano una nuova.
- L'oggetto che deve essere usato per la manipolazione delle stringhe è "System.Text.StringBuilder", il quale non lavora con stringhe, ma con Stream di dati.
provate a creare una Console Application e sostituire il metodo main con il seguente:
static void Main(string[] args) { /* test with + operator */ DateTime start = System.DateTime.Now; string resultString = string.Empty; for (int i = 0; i < 50000; i++) { resultString += "123456789abcdefghilmnopqrstuvz"; } TimeSpan t = (System.DateTime.Now - start); Console.WriteLine(string.Format("Test with + operator. Time : {0}:{1}:{2}:{3}", t.Hours, t.Minutes, t.Seconds, t.Milliseconds)); /* Test with StringBuilder */ start = System.DateTime.Now; StringBuilder resultStringBuilder = new StringBuilder(); t = (System.DateTime.Now - start); for (int i = 0; i < 50000; i++) { resultStringBuilder.Append("123456789abcdefghilmnopqrstuvz"); } Console.WriteLine(string.Format("Test with StringBuilder. Time : {0}:{1}:{2}:{3}", t.Hours, t.Minutes, t.Seconds, t.Milliseconds)); Console.ReadLine(); }
Senza parole vero?
Nessun commento:
Posta un commento