Исследователь...
От: Ellin Россия www.rsdn.ru
Дата: 02.07.09 11:57
Оценка: 2 (1) :))) :))) :))) :)))
Вот что пишет в своем блоге:

LINQ to object vs foreachНачал изучать LINQ, и почитав немного про него, задался вопросом, а зачем он нужен? Ведь ту же самую работу можно выполнить с помощью обычного цикла foreach. Сразу возник вопрос, а что с производительностью? Кто будет быстрее? Для этого создал небольшой тест.

Random rnd = new Random();
List< string > names = new List< string >();
for ( int i = 0; i < 1000000; i++ )
{
StringBuilder sb = new StringBuilder();
for ( int j = 0; j < 10; j++ )
{
sb.Append((char) rnd.Next('a',
'z'));
}
names.Add(sb.ToString());
}
List< string > matches = new List< string >();

Stopwatch sw = new Stopwatch();
sw.Start();
foreach ( string s in names )
{
if ( s.StartsWith("d") )
{
matches.Add(s);
}
}
sw.Stop();
Console.WriteLine("standart foreach: {0}",
sw.Elapsed.TotalMilliseconds);

sw.Reset();
sw.Start();
var matchesLinq = (from s in names
where s.StartsWith("d")
select s);
sw.Stop();
Console.WriteLine("linq to object: {0}",
sw.Elapsed.TotalMilliseconds);
Вначале создается список со случайными значениями, а затемосуществляется поиск с помощью foreach и LINQ. И производится замер времени работы.В результате я получил такие значения:standart foreach: 222.3422

linq to object: 0.1737

Паразительно, но скорость выполнения LINQ кода, в 1280 раз выше чем foreach!!!
К тому же запись LINQ гораздо более компактна чем foreach цикл.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.