Почему параметризованный SQL генерируется NHibernate так же быстро, как хранимая процедура? - PullRequest
15 голосов
/ 08 сентября 2008

Один из моих коллег утверждает, что, несмотря на то, что путь выполнения кэшируется, не существует способа, которым параметризованный SQL, сгенерированный из ORM, был бы таким же быстрым, как хранимая процедура. Любая помощь с этим упрямым разработчиком?

Ответы [ 13 ]

0 голосов
/ 09 сентября 2008

Дополнительный уровень абстракции приведет к тому, что он будет медленнее, чем чистый вызов sproc. Просто благодаря тому, что у вас есть дополнительные выделения в управляемой куче, и дополнительные выталкивают и выталкивают из стека вызовов, правда в том, что эффективнее вызывать sproc, если ORM создает запрос, независимо от того, насколько хорош ORM есть.

Как медленно, если ее даже измерить, является дискуссионным. Это также помогает тот факт, что большинство ORM имеют механизм кэширования, чтобы вообще не выполнять запрос.

0 голосов
/ 08 сентября 2008

Он может быть правильным для конкретного случая использования, о котором он думает. Хранимая процедура, вероятно, будет выполняться быстрее для некоторого сложного набора SQL, который можно произвольно настроить. Однако, что-то, что вы получаете от таких вещей, как спящий режим, - это кеширование. Это может оказаться намного быстрее в течение срока службы вашего фактического приложения.

0 голосов
/ 08 сентября 2008

Измерь это.

Действительно, любая дискуссия на эту тему, вероятно, бесполезна, пока вы ее не измерите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...