Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LINQ (Language-Integrated Query) > Два способа использования LINQ: неожиданный резуль


Автор: Lantern 16.5.2010, 15:04
Я набросал 2 ASP.NET приложения с использованием LINQ. Одно соединяется с MS SQL Server, другое – со структурой в памяти. 
Оба приложения работают с таблицей в 500 тыс. записей, запись 3 поля типа int. Контролы стандартные: GridView и ObjectDataSource. 
Измеряю среднее время, необходимое на отработку постраничного вывода. 
Приложение LINQ + MS SQL дает среднее время 0.1 сек на каждое переключение страницы. 
Приложение LINQ + память дает среднее время 0.8 сек на каждое переключение страницы. 
Странным образом, приложение, работающее с памятью работает в 8 раз медленнее, чем приложение, работающее с диском. Получается, что кэширование замедлило доступ. Интересно, почему? 

Автор: Любитель 17.5.2010, 06:44
OrderBy по ID в сиквеле использует индекс (праймари кей же!), а для in memory реализации производтся сортировка всех этих записей при каждом OrderBy (ну точнее при енмуерации значений физически, но да ладно). Причём не только нужных (тех, которые до нужной страницы плюс сама страница), а всех (так работает OrderedEnumerable).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)