Статья: Использование интегрированных в язык запросов (linq) при обработке массива данных в microsoft visual basic 2008
Традиционный подход
Dim sum As Integer = 0
For i As Integer = 0 To UBound(Vector)
sum += Vector(i)
Next
LINQ подход
Dim Result As Integer = Aggregate Element In Vector _
Into Sum()
Нахождение элемента исходного массива с максимальным значением.
Традиционный подход
Dim max As Integer = Vector(0)
For i As Integer = 1 To UBound(Vector)
If Vector(i) > max Then max = Vector(i)
Next
LINQ подход
Dim Result As Integer = Aggregate Element In Vector _
Into Max()
Результаты сравнения
№ | Алгоритм | LINQ, мс | Традиционный, мс |
1 | Выборка положительных элементов | 1205 | 1324 |
2 | Сортировка по возрастанию | 62 | 6801 |
3 | Возведение в квадрат | 13791 | 14820 |
4 | Отбор элементов без повторов | 4330 | 209181 |
5 | Количество отрицательных элементов | 2137 | 592 |
6 | Среднее значение | 1139 | 201 |
7 | Суммирование элементов | 920 | 172 |
8 | Поиск максимума | 983 | 187 |
Выводы
Проведено сравнение традиционной технологии обработки массива данных с технологией LINQ.
Показано, что использование языка запросов LINQ значительно сокращает время разработки и объем написанного кода при проектировании алгоритмов для решения типичных задач обработки массива данных.
На некоторых типах рассмотренных задач (выборка положительных элементов, сортировка, возведение в квадрат, отбор элементов без повторов) производительность алгоритмов с LINQ технологией выше, чем у традиционных итерационных алгоритмов. На остальных рассмотренных типах задач (количество отрицательных элементов, вычисление среднего значения, суммирование элементов, поиск максимума) производительность алгоритмов с LINQ технологией хоть и ниже производительности итерационных алгоритмов, но является приемлемой для обработки достаточно больших объемов данных без существенных потерь скорости.
Рассматриваемая в данной статье технология LINQ успешно применялась автором для написания алгоритма обработки массива результатов тестирования более чем 6200 школьников 5 классов всех школ республики Северная Осетия-Алания в конце 2007 г.
Литература
Вагнер В. Исследуем LINQ // Алгоритм 2006. № 4.
Чистяков В. Коллекции в .NET Framework Class Library // RSDN Magazine 2003. № 6.
Paolo Pialorsi, Marco Russo. Introducing Microsoft LINQ. Microsoft Press. 2007.
* Научный руководитель к.т.н., доц. Мамонтов Д. В.