Я искал простой ответ, но я его не нашел (хотя, если я слепой или нетерпеливый, я буду рад, если кто-то опубликует мне ссылку)
У меня есть следующий код в моем репозитории
get
{
if (context.entity.Local.Count == 0)
{
return context.entity;
}
return context.entity.Local;
}
По здравому смыслу я знаю, что слово local
не запрашивает базу данных и не получает результат из памяти. Тем не менее, мне хотелось бы знать, насколько быстрее получается набор результатов из local
чем из базы данных? Это огромная разница?
Я прошу, чтобы ускорить работу своего веб-приложения, поэтому я пытаюсь найти недостатки в коде.
благодаря
Во-первых, ваш здравый смысл не имеет никакого смысла. Локальный - это ничего, что определено вообще в EF, поэтому это зависит от того, кто сделал репозиторий, и мог бы также ссылаться на что-то другое.
Второе - много. Легкий коэффициент 1000. База данных - это отдельный процесс, который включает в себя генерацию и затем анализ SQL. 2x сетевой передачи (или передачи сетевого айлера). Сравните это, просто прочитав свойство. 1000, вероятно, является консервативным. Не то, чтобы в базе данных было много времени для начала.
Это зависит от того, что вы делаете - но кеширование в памяти и избежание базы данных - это правильная стратегия, которая может иметь большое значение, производительность разумная. За счет большего количества проблем с потреблением памяти и изменениями синхронизации. Более поздняя версия не имеет отношения к некоторым (никогда не меняющимся) данным.