web-dev-qa-db-ja.com

NHibernateプロファイラーの無料の代替品?

NHibernateプロファイラー以外のプロファイリングプログラムや方法があるかどうか疑問に思っています。試用期間が終了し、購入する余裕がありません。

それで、そこに代替手段はありますか?

33
chobo2

SQL Server Management Studio2005および2008に付属しているSQLプロファイラーがあります。私はそれらを常に使用しており、非常に貴重だと感じています。

SQLExpress用のSQLプロファイラーもあります: http://sites.google.com/site/sqlprofiler/

これらは、優れたNHibernateプロファイラーとまったく同じではありませんが、高価で非効率的な操作を認識するのに同じように役立ちます。

12
Digbyswift

かなり良い代替手段は、Glimpseプラグインを使用することです。

NHibernate.Glimpse

NHibernateによって生成されたSQL、それに関連する呼び出しスタック、セッションファクトリ統計、呼び出しタイミングなどがすべて現在のページの下部または新しいウィンドウに表示されます。

Glimpseは次の場所からダウンロードできます: getglimpse.com

Channel9にも素敵なプレゼンテーションがあります: Channel9のGlimpseTeam


2013年9月26日現在のASP.NETのインストール 2013年4月10日

パッケージマネージャーコンソールを使用したインストール:

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

セッションファクトリを登録して、グローバル統計を表示できるようにします。

NHibernate.Glimpse.Plugin.RegisterSessionFactory(mySessionFactory);

Webアプリケーションを実行し、次のサイトにアクセスします。

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タブ内で検査するリクエストを選択する必要があります。


2013年4月9日現在のAsp.Netのインストールに関する注意:

パッケージマネージャーコンソールを使用してインストールします。

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.Core1.0.1に更新されなくなります。

Gitクローン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);
41

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
Muxa

私は自分自身に尋ねます...あなたはそれを買う余裕がありますかない?サブスクリプション料金は月額わずか16ドルです。それを使った最初の試行に基づいて、それは私のプロジェクトのパフォーマンスに大きな違いをもたらし、私がまだ知らなかったnHibernateについていくつかのことを教えてくれました。

3
Jason Barile