Пишу один небольшой проект. Для себя. Использую sqllite и bltoolkit.
Запрос
var dbresult = (from p in p4DB.Accounts
where p.accType == 1
orderby p.accOrd
select p);
dbresult.ToList() — первый раз выполняется около 3 секунд. Следующие обращения мгновенно.
Без условия where p.accType == 1 меньше секунды.
Сам sql выполняется 0,001... секунды.
Может кто сталкивался и может подсказать как побороть тормоза? . Как вариант можно писать sql запрос руками, но как тоне кошерно ...
Здравствуйте, sjrk, Вы писали:
S>Пишу один небольшой проект. Для себя. Использую sqllite и bltoolkit. S>Запрос S>var dbresult = (from p in p4DB.Accounts S> where p.accType == 1 S> orderby p.accOrd S> select p);
S>dbresult.ToList() — первый раз выполняется около 3 секунд. Следующие обращения мгновенно. S>Без условия where p.accType == 1 меньше секунды. S>Сам sql выполняется 0,001... секунды. S>Может кто сталкивался и может подсказать как побороть тормоза? . Как вариант можно писать sql запрос руками, но как тоне кошерно ...
а ты попробуй таки руками sql написать. Что то мне кажется, тут не в BLToolkit дело, а в СУБД/запросе, и голый скл столько же времени будет выполняться..
Здравствуйте, Jack128, Вы писали:
J>а ты попробуй таки руками sql написать. Что то мне кажется, тут не в BLToolkit дело, а в СУБД/запросе, и голый скл столько же времени будет выполняться..
нееее сам sql выполняется очень быстро ... на работе проект на оракле условия where намного страшее и работает на ура. а sqllite вот такие тормоза почему то ...
Здравствуйте, sjrk, Вы писали:
S>dbresult.ToList() — первый раз выполняется около 3 секунд. Следующие обращения мгновенно. S>Без условия where p.accType == 1 меньше секунды. S>Сам sql выполняется 0,001... секунды.
Это JIT компилирует код.
Есть 2 основные техники уменьшить время холодного старта:
1) Использовать NGEN.
2) Если это возможно (а иногда только это и возможно) — использовать warm-up — т.е. просто пускать "разогревающий" код — в твоём случае это например выполнить этот самый селект. Время это не сократит, но это можно выполнить либо в фоне, либо на старте программы — и когда нужно будет нормальное взаимодействие с пользователем — всё уже будет готово.
Для клиентских/локальных приложений я всегда выбираю ngen, но надо помнить, что для ngen-а не все оптимизации доступны которые может сделать jit — хотя я таких ситуаций не встречал.
Здравствуйте, fddima, Вы писали:
F> Это JIT компилирует код. F> Есть 2 основные техники уменьшить время холодного старта: F> 1) Использовать NGEN. F> 2) Если это возможно (а иногда только это и возможно) — использовать warm-up — т.е. просто пускать "разогревающий" код — в твоём случае это например выполнить этот самый селект. Время это не сократит, но это можно выполнить либо в фоне, либо на старте программы — и когда нужно будет нормальное взаимодействие с пользователем — всё уже будет готово. F> Для клиентских/локальных приложений я всегда выбираю ngen, но надо помнить, что для ngen-а не все оптимизации доступны которые может сделать jit — хотя я таких ситуаций не встречал.
fddima, спасибо!
Про второй вариант я уже думал.
Можно немного подробнее про первый вариант? Просто с c# я работаю пару месяцев , а с bltoolkit и того меньше. Проект пишу, точнее переписываю для себя, и заодно пытаюсь разобраться.
Здравствуйте, sjrk, Вы писали:
S>Про второй вариант я уже думал. S>Можно немного подробнее про первый вариант? Просто с c# я работаю пару месяцев , а с bltoolkit и того меньше. Проект пишу, точнее переписываю для себя, и заодно пытаюсь разобраться.
Это утилита рантайма, ngen.exe — native image generator.