У меня есть приложение, которое читает файл и получает электронные письма из него. Я запускал свое приложение с помощью потоков, но мое приложение не улучшалось в производительности ... В чем моя проблема?Получить электронные письма из файла с помощью потоков
Использование потоков (занимает 54 сек):
StreamReader sr = new StreamReader(@"D:\15.txt");
Regex regx = new Regex(@"([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))");
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
Thread th = new Thread(new ThreadStart(() => {
var mc = regx.Matches(line);
if (mc.Count != 0)
foreach (Match item in mc)
{
Console.WriteLine(item.Value);
}
}));
th.Start();
}
Нормальный Код (занимает 54 сек):
StreamReader sr = new StreamReader(@"D:\15.txt");
Regex regx = new Regex(@"([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))");
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
var mc = regx.Matches(line);
if (mc.Count != 0)
foreach (Match item in mc)
{
Console.WriteLine(item.Value);
}
}
Ваше время, читающее файл с диска, затмевает время обработки регулярного выражения –
Проблема в том, что вы связаны дисковым IO, а не вычислительными ресурсами. –
, когда я удаляю коды регулярных выражений, файл чтения занимает 5 секунд .. Я думаю, что это не чтение диска. 'StreamReader sr = new StreamReader (@" D: \ 15.txt "); while (! Sr.EndOfStream) { \t var line = sr.ReadLine(); } ' –