У меня есть 300-400 файлов в каждом 200-300 строк. Количество файлов как и их размер постоянно растет и уже сейчас на некоторых заковыристых операциях гуи подмораживается. Есть операции как чтения так и изменения некоторых строк в файле.
Соответственно встает вопрос оптимизации.
Порывшись в гугле я остановился на двух подходах.
Первый
private void GetStepname(string[] files, string stepname)
{
foreach (string file in files)
{
sr = new StreamReader(file);
using (sr)
{
while (!sr.EndOfStream)
{
line = sr.ReadLine();
if (line.Contains(stepname)) //search for a limit
//и так далее
}
}
}
Второй
private void GetStepname(string[] files, string stepname)
{
foreach (string file in files)
{
string[] text = File.ReadAllLines(file);
for (int i = 0; i < text.Length; i++)
{
if (text[i].Contains(stepname))
//и так далее
}
}
}
Вопрос, какой предпочтительней.
И еще такой вопрос - перебор файлов делать внутри метода или снаружи
private void buttonGetFields_Click(object sender, EventArgs e)
{
string[] files = new string[listBoxFiles.SelectedItems.Count];
listBoxFiles.SelectedItems.CopyTo(files, 0);
GetStepname(files, stepname);
}
Или
private void buttonGetFields_Click(object sender, EventArgs e)
{
foreach (string file in listBoxFiles.SelectedItems)
{
GetStepname(file, stepname);
}
}