Re[2]: LINQ как шаг к функциональному программированию
От: Andrey Gliznetsov  
Дата: 14.01.09 08:39
Оценка:
Здравствуйте, eao197, Вы писали:

E>PPPS. Надеюсь, что 90% императивных программистов все-таки пишут так:

E>
E>for (int i = 0; i < array1.Length; i++)
E>{
E>  if (i != 0)
E>    result += ", ";

E>  result += array1[i];
E>}
E>


Надеюсь что любой грамотный программист напишет вот так:



var sb = new StringBuilder();
for (int i = 0; i < array1.Length; i++)
{
    if (i != 0)
    sb.Append(", ");
    sb.Append(array1[i]);
}
result = sb.ToString();



Кроме того за все в этой жизни надо платить, в том числе и за лаконичность LINQ, вот результаты конкатенации массива чисел из 10000 элементов:

Способ: императивный
Расход памяти: 1200 kb
Время: 1600 ms

Способ: LINQ
Расход памяти: 2400 kb
Время: 860 ms

Способ: StringBuilder
Расход памяти: 580 kb
Время: 4 ms

Интересно что Linq отаработал в два раза быстрее и сожрал в два раза больше памяти, чем простой цикл. Ну а последний результат, как говорится без коментариев
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.