Muszę napisać tysiące dynamicznie generowanych linii do pliku tekstowego. Mam dwie możliwości, które zużywają mniej zasobów i są szybsze od innych?Co zużywa mniej zasobów i czy jest szybsze przechowywanie File.AppendText lub File.WriteAllText w StringBuilder?
A. Korzystanie StringBuilder i 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. Korzystanie 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/ –
Muszę wykonać tę operację tak szybko, jak to tylko możliwe, ponieważ wiąże się to z tworzeniem sieci i pisaniem baz danych. I mam pewne wąskie gardła, więc zadaję to pytanie, ponieważ potrzebuję, nie dlatego, że nie jestem świadomy artykułu, który łączyłeś. –
Nie jestem pewien, czy prędkość powinna być tutaj głównym problemem. Wykorzystanie pamięci wyraźnie decyduje o Twojej decyzji. Jeśli dane są zawsze małe, wystarczy przeprowadzić kilka testów, aby ustalić, która z nich jest szybsza. – juharr