Devo scrivere migliaia di righe generate dinamicamente in un file di testo. Ho due scelte, che consuma meno risorse ed è più veloce dell'altra?Cosa consuma meno risorse ed è più veloce File.AppendText o File.WriteAllText che memorizza prima in StringBuilder?
A. Utilizzo StringBuilder e File.WriteAllText
StringBuilder sb = new StringBuilder();
foreach(Data dataItem in Datas)
{
sb.AppendLine(String.Format("{0}, {1}-{2}",dataItem .Property1,dataItem .Property2,dataItem .Property3));
}
File.WriteAllText("C:\\example.txt", sb.ToString(), new UTF8Encoding(false));
B. Utilizzo File.AppendText
using(StreamWriter sw = File.AppendText("C:\\example.txt")){
foreach (Data dataItem in Datas)
{
sw.WriteLine(String.Format("{0}, {1}-{2}",dataItem .Property1,dataItem .Property2,dataItem .Property3));
}
}
http://ericlippert.com/2012/12/17/performance-rant/ –
Ho bisogno di fare questa operazione il più velocemente possibile, perché implica il networking e la scrittura del database. E ho alcuni colli di bottiglia legati, quindi sto facendo questa domanda perché ho bisogno, non perché non sono a conoscenza dell'articolo che hai collegato. –
Non sono sicuro che la velocità dovrebbe essere la vostra preoccupazione principale qui. L'utilizzo della memoria è chiaramente quello che dovrebbe guidare la tua decisione. Se i dati sono sempre piccoli, è sufficiente eseguire alcuni test per determinare quale sia più veloce. – juharr