Считываю текстовый файл, обрабатываю его и записываю в другой файл. Но работает это медленно.
Как можно оптимизировать работу даного кода что бы работало быстрее?
StreamWriter sw = new StreamWriter("output.txt");
StreamReader tr = new StreamReader("input.txt");
var stack = new Stack<string>();
string line = "";
while (!tr.EndOfStream)
{
line += tr.ReadLine()+" ";
}
tr.Close();
string[] file_notes = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for(int i = 1; i < file_notes.Length; i++)
{
if (file_notes[i] == "+") stack.Push(file_notes[i + 1]);
else if (file_notes[i] == "-") sw.WriteLine(stack.Pop());
}
sw.Close();
Если файл маленький - попробуй считывать весь файл целиком и после обработки записывать целиком. Вместо постоянных считываний и записи по каждому чиху.
Винчестер работает медленно. И ему приходится обращатся то к одной области памяти то к другой. Вот и все задержки алгоритма.
Если файлы большие(гигабайт там или больше) - считывай и обрабатывай через буфер данных.
То есть используй BufferedStream
и подбери оптимальный размер буфера экспериментальным путем. Предлагаю начать с мегабайт 15ти.
Это и есть главная причина задержки.
Так же используй StringBuilder
вместо String
для сохранения результатов обработки данных с файла, как сказал iluxa1810
Это для оптимизации использования оперативной памяти в первую очередь. На быстродействие влияет значительно меньше чем первый пункт, но так же важно.
Если файл большой, то использование переменной string
не допустимо, так как каждое новое присвоение создается новый объект string
с копированием всех предыдущих данных.
Для этих целей лучше использовать StringBuilder
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сразу после загрузки сцены начинает проигрываться катсцена,сделанная с помощью TimelineПотом геймплей, если игрок умирает сцена просто загружается...
Задача интегрироваться в систему где для связи между устройствами используется протокол tcpНужно разработать сервер, для другой логики работы...
Создавая программу, мне понадобилось создать picture Box, который для моего дизайна должен быть круглымПомогите понять, как это сделать