Я хотел бы прочитать содержимое файла и сделать некоторые замены на нем. После этого исходный файл с заменами загружается как XDocument. Я сделал 2 разных реализации:
реализация1:
string contents1 = File.ReadAllText(fileInfo.FullName, new UTF8Encoding(true));
File.WriteAllText(fileInfo.FullName, methodForReplacements(contents1), new UTF8Encoding(true));
return XDocument.Load(fileInfo.FullName, LoadOptions.PreserveWhitespace);
реализация2:
string contents;
using (FileStream fs = File.OpenRead(fileInfo.FullName))
{
using (StreamReader sr = new StreamReader(fs, new UTF8Encoding(true)))
{
contents = methodForReplacements(sr.ReadToEnd());
}
}
using (StreamWriter sw = new StreamWriter(fileInfo.Name, false, new UTF8Encoding(true)))
{
sw.Write(contents);
}
return XDocument.Load(fileInfo.FullName, LoadOptions.PreserveWhitespace);
replaceMethod ():
private string methodForReplacements(string contents)
{
string replaced = new StringBuilder(contents)
.Replace("\r", "
")
.Replace("\n", "
")
.ToString();
return replaced;
}
После после некоторого бенчмаркинга (10000 итераций, размер файла: 265 КБ, numberOfReplacements: 10) кажется, что выполнение 2 реализаций занимает очень много времени (реализация 1: 99se c, реализация 2: 97se c). Есть ли другой, более оптимизированный и эффективный способ достижения того же результата?