Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, liiw, Вы писали:
L>>Тесты тестируют скорость выволнения запросов :). На время инициализации контекста можно не смотреть, т.к. что имеено в него входит я не знаю — можно смотреть только суммарное время выпонения запроса. Контекстом я хотел померять накладные расходы за вычетом самого запроса (компилция LINQ, выполнение запроса, материализация). И как видно по тестам, на что-то там ещё тратится время, хоть и незначительное.
I>А почему время инициализации контекста можно смотреть ? У тебя получается что выпячивается именно эта инициализация. Если контекст создаётся каждый раз на реквест, то на простецких запросах это вылезет. I>То есть, непонятен сам тест, что он показывает, с учетом твоих коментариев. Если тест про то, что время инициализации сравнимо с временем работы маппинга, то это мне кажется надо как то иначе замерять.
Не очень понял вопрос. Почему нужно (а не "можно") смотреть время инициализации контекста?
Я рассуждал так.
Есть время выполнения запроса — создание SQL комманды (с помощью LINQ или сразу текста), посылка её SQL-серверу, выполнение команды SQL-сервером, чтение ответа SQL-сервера, и материализация данных.
У меня было предположение, что помимо самого выполнения запроса на суммарное время могут влиять другие факторы. Какие — не суть важно. Я назвал эти факторы инициализацией контекста.
И это не обязательно только создание класса — "new NorthwindEfDbContextCodeFirst()". Может непосредственно при вызове SQL-запроса что-то ещё делается. Не суть важно. Я хотел померять это.
Результат — т.к. это время получилось относительно маленьким, то для реальных запросов (т.е. не однострочных типа "SELECT * FROM Table1") его влияние можно не учитывать. Не учитывать для ADO.NET и LINQ2DB. Для EF нужно учитывать — что при его использовании для не сильно сложных запросов это время может существенно влиять если запросов много.