MVC OnResultВыполнение проблем с производительностью - PullRequest
0 голосов
/ 24 января 2012

В настоящее время я изучаю проблемы с производительностью нашего веб-приложения (MVC2, S # arp Architecture, беглый nHibernate), используя великолепный мини-профилировщик MVC. Я использую атрибут в действиях или контроллерах, которые я хочу инвестировать, как описано в этом посте Получение дополнительной «детализации» от MVC Mini Profiler .

Я обнаружил, что много времени тратится между OnResultExecuting и onResultExecuted, я подумал, что это должно быть рендеринг представления, так что если есть сложная логика, вызванная оттуда, это будет проблемой, но я поставил число of profiler обходит части представлений, включая одно вокруг всей главной страницы, но все еще остается много времени (около 4-5 секунд в некоторых случаях), которое полностью не учитывается.

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

Любые указатели будут оценены.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Вы создаете модели представлений, чтобы передавать их на рендеринг? Если модель представления имеет коллекцию чего-либо, и эта коллекция заполняется с помощью запроса Linq в NHibernate, то возможно, что запрос Linq выполняется как часть визуализации представления. Это означает, что некоторые из 4-5 секунд могут быть заняты с доступом к базе данных. Как правило, любой код, который создает модель представления, должен гарантировать, что все коллекции в этой модели представления заполнены полностью, а не являются IQueryables, которые еще не были перечислены.

Это звучит как возможность? Если это так, использование NHProf может помочь закрепить его.

1 голос
/ 09 февраля 2012

Мое лучшее предположение заключается в том, что он фиксирует UnitOfWork (ISession в NHibernate).Это может быть довольно трудоемкой операцией.

...