Подтвердить что ты не робот

Бесплатные альтернативы профилировщику NHibernate?

Мне интересно, есть ли какая-то другая программа или способ профилирования, кроме профилировщика NHibernate. Мое судебное разбирательство закончилось, и я не могу позволить себе его купить.

Есть ли там альтернативы?

4b9b3361

Ответ 1

Существует SQL Profiler, который поставляется с SQL Server Management Studio 2005 и 2008. Я использую их все время и считаю их бесценными.

Существует также SQL Profiler для SQL Express по адресу: http://sites.google.com/site/sqlprofiler/

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

Ответ 2

Хорошей альтернативой будет использование плагина Glimpse:

NHibernate.Glimpse

Он отображает SQL, сгенерированный NHibernate, связанный с ним стек вызовов, статистику фабричной сессии, время вызовов и т.д. В нижней части текущей страницы или в новом окне.

Glimpse можно скачать с: getglimpse.com

На 9 канале также есть хорошая презентация: Команда Glimpse на 9 канале.


Установка для ASP.NET по состоянию на 26 сентября 2013 г. 10 апреля 2013 г.

Установка с использованием консоли диспетчера пакетов:

PM> Install-Package Glimpse.AspNet
PM> Install-Package NHibernate.Glimpse

Зарегистрируйте свою фабрику сессий, чтобы увидеть глобальную статистику:

NHibernate.Glimpse.Plugin.RegisterSessionFactory(mySessionFactory);

Запустите ваше веб-приложение и посетите:

http://localhost:8080/Glimpse.axd

Предполагается, что приложение работает на локальном хосте через порт 8080.

Оттуда вы можете включить/выключить Glimpse или назвать сессию.

enter image description here Как только вы включите Glimpse, он появится на страницах вашего сайта, свернутых в правый нижний угол (нажмите G, чтобы открыть его):

enter image description here

Чтобы использовать NHibernate.Glimpse с вызовами AJAX, вам нужно выбрать запрос, который вы хотите проверить, на вкладке ajax, а затем просмотреть данные на вкладке NHibernate как обычно.

enter image description here


Запросы AJAX (эта ручная настройка больше не требуется в последней версии)

Чтобы он работал с вызовами ajax, вам нужно включить их в зависимости от типа содержимого ответа в "Web.config".

Для инструментария управления ajax UpdatePanel требуется тип содержимого text/plain:

Краткая настройка, необходимая для ASP.NET WebForms AJAX

Затем вам нужно выбрать запрос, который вы хотите проверить, на вкладке ajax.


Замечания по установке Asp.Net от 9 апреля 2013 года:

Установите с помощью консоли диспетчера пакетов:

PM> Install-Package NHibernate -Version 3.3.2.4000

PM> Install-Package Glimpse -Version 1.0.0-rc1 -Pre

PM> Install-Package -IgnoreDependencies Glimpse.AspNet -Version 1.0.0-rc1 -Pre

Glimpse.AspNet должен быть установлен с -IgnoreDependencies чтобы он не обновлял Glimpse.Core до версии 1.0.1.

Git Clone NHibernate.Extensions:

git://github.com/ranzlee/NHibernate.Extensions.git

и либо добавьте проект Nhibernate.Glimpse в ваше решение, либо создайте проект и добавьте в него ссылку на dll.

Добавить в Web.config:

</configuration>

    .
    .
    .

    <appSettings>
        <add key="nhibernate-logger" value="NHibernate.Glimpse.LoggerFactory, NHibernate.Glimpse"/>
        <add key="NHibernate.Glimpse.Loggers" value="command,connection,flush,load,transaction"/>
    </appSettings>
</configuration>

И убедитесь, что вы установили providerName в строке подключения. Пример для провайдера SqlClient:

<connectionStrings>
  <add name="TestDb" providerName="System.Data.SqlClient" connectionString="Server=example.com;database=nhibernate_test;User ID=postgres;Password=password;" />
</connectionStrings>

И зарегистрируйте свою фабрику сессий:

NHibernate.Glimpse.Plugin.RegisterSessionFactory(SessionHolder.SessionFactory);

Ответ 3

Проблема с использованием SQL Profiler заключается в том, что некоторые операторы (в частности, вставки) отображаются индивидуально, и нет способа увидеть, была ли доработка пакетом NHibernate (http://www.codinginstinct.com/2009/08/profiling- NHibernate-batching.html).

NHibernate использует log4net для регистрации всех операторов sql - это можно использовать для просмотра того, что действительно отправлено в базу данных.

<logger name="NHibernate.SQL"
        additivity="false">
  <level value="ALL" />
  <appender-ref ref="rollingFile" />
</logger>

Ответ 4

Я бы спросил себя... можете ли вы позволить себе не покупать его? Это всего лишь $16 в месяц по ставке подписки. Основываясь на моем первоначальном исследовании с ним, он сделал огромную разницу в производительности моего проекта и научил меня нескольким вещам о nHibernate, которого я еще не знал.