Linq To Sql против производительности Entity Framework

Я искал последние тесты производительности, которые сравнивают L2S и EF, и не смог найти ни одного, который тестировал бы вызов хранимых процедур с использованием выпущенной версии EF. Итак, я провел несколько собственных тестов и нашел некоторые интересные результаты.

Правильно ли выглядят эти результаты? Стоит ли тестировать по-другому?

Один экземпляр контекста, один вызов sproc: (мертвая ссылка)

Один экземпляр контекста, несколько вызовов одного и того же sproc: (мертвая ссылка)

Несколько экземпляров контекста, несколько вызовов одного и того же sproc: (мертвая ссылка)

Что происходит, когда вы помещаете строки создания контекста в блок using ()? Эти более продолжительные вызовы могут быть из-за того, что система не имеет соединения в пуле ...?

Dave Markle 02.11.2008 19:39

Вы также можете проверить производительность обновления, удаления и вставки.

DamienG 03.11.2008 01:42

Ваш код данных обычно выглядит так? Почему-то это не похоже на настоящий код доступа к данным ... Тестирование циклов не имеет ничего общего с тем, как выглядят реальные шаблоны доступа к данным.

Jason Short 04.12.2008 07:26
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
16
3
24 845
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я думаю, вам стоит протестировать это несколько иначе, чтобы отличить затраты на запуск против затрат на исполнение. В частности, Entity Framework имеет значительный затраты на запуск из-за необходимости компилировать представления базы данных (хотя вы можете сделать это заранее). Точно так же в LINQ есть понятие скомпилированный запрос, которое было бы подходящим при выполнении запроса несколько раз.

Для многих приложений затраты на выполнение запроса будут более важными, чем затраты на запуск. Для некоторых может быть правдой обратное. Поскольку рабочие характеристики у них разные, я считаю важным их различать. В частности, вводит в заблуждение усреднение затрат на запуск и среднюю стоимость многократно выполняемого запроса.

Но разве эти результаты не отражают, как все будет работать в приложении asp.net? Поскольку я действительно не могу сохранить экземпляр в любом контексте «живым», я должен создавать новый для каждого запроса и вызывать хранимую процедуру.

Vyrotek 03.11.2008 21:39

Нет, не обязательно. Вы можете предварительно скомпилировать представления Entity Framework, и в этом случае вы не платите эти затраты при создании экземпляра контекста. Даже для вещей, которые нельзя предварительно скомпилировать, отслеживание этих элементов по отдельности проясняет разницу между запросом, который выполняет один запрос, и тем, который выполняет 100.

Craig Stuntz 04.11.2008 01:11

Я сделал несколько тестовых страниц asp.net, пытаясь понять, какая из них работает лучше. Мой тест был:

Удалить 10 000 записей Вставить 10 000 записей Редактировать 10 000 записей Свяжите 10000 записей с GridView и отобразите на странице

Я ожидал, что LinqToSQL будет быстрее, но выполнение вышеуказанного LinqToSQL занимает почти 2 минуты, а LinqToEntities - менее 20 секунд.

По крайней мере, для этого теста кажется, что LinqToEntities быстрее. Мои результаты, похоже, совпадают с вашими.

Я не пробовал вставлять / редактировать / удалять / отображать более одной таблицы, объединенной вместе.

Мне интересно узнать больше ... или, если мой тест не является допустимым типом теста, мне было бы интересно увидеть некоторые настоящие тесты.

Я понимаю, что это старый пост, но если вам все еще интересно, я провел несколько тестов с EF, которые доступны здесь (blog.staticvoid.co.nz/2012/03/entity-framework-comparat‌ ive.html). Я обнаружил, что L2S намного медленнее при обновлении, но мне хотелось бы знать, почему (и есть ли способ его улучшить). L2S был намного быстрее на Selects, хотя

Not loved 22.04.2012 10:18

Хорошо сделано. Я далек от эксперта по базам данных и ORM, но мне нравится то, что показали ваши тесты. Я также недавно прочитал статью команды ADO.net об улучшениях EF5: blogs.msdn.com/b/adonet/archive/2012/02/14/…

dtc 24.04.2012 23:35

спасибо, да, команда EF в последнее время делала довольно крутые вещи в отношении производительности, что интересно, большая часть из них, похоже, была сделана внутри dot net 4.5, а не в двоичных файлах EF, что круто, поскольку это дает толчок целому ряду различных технологий.

Not loved 25.04.2012 04:03

Похоже, это хорошее измерение производительности между LINQ to SQL и Entity Framework.

http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html

Другие вопросы по теме