SQL データベース (= 同じサーバー上) から値を取得する 2 つの異なる方法を試すコンソール アプリケーションを作成しました。ストップウォッチを追加して、どちらが最速の方法であるかを確認すると、最初の方法を取得することもあれば、2 番目の方法を取得することもあります。これは何が原因ですか?同じ条件でテストを実行することは可能ですか? この非同期を実行する必要がありますか?
私のコンソールコードはここにあります: http://pastie.org/7920175
SQL データベース (= 同じサーバー上) から値を取得する 2 つの異なる方法を試すコンソール アプリケーションを作成しました。ストップウォッチを追加して、どちらが最速の方法であるかを確認すると、最初の方法を取得することもあれば、2 番目の方法を取得することもあります。これは何が原因ですか?同じ条件でテストを実行することは可能ですか? この非同期を実行する必要がありますか?
私のコンソールコードはここにあります: http://pastie.org/7920175
StopWatch
あなたが望むほど正確ではないかもしれません。
非常に便利な Visual Studio 2012 Performance Analysis を使用できます (vs2012 を使用している場合)。それ以外の場合は、YourKitなどのプロファイラー ツールをインストールすることをお勧めします。
2 つの方法で SQL データベースからデータを取得するとおっしゃいました。つまり、作成したコードだけでなく、動作がおそらく異なるサードパーティの操作 (データベースからの読み取りなど) も測定しているということです。これは、2 つのメソッドが実行ごとに異なるタイミングを返す原因の 1 つかもしれません。
この素晴らしいツールを使用して、メソッドのパフォーマンスをチェックできると思います。
SpeedTester myTest = new SpeedTester([method to test]);
myTest.RunTest();
テストしているメソッドはどのくらいの頻度で呼び出されますか? それらをそれぞれ 1000 回実行し、どちらが長い間高速であるかを確認します。
また、すべてのメソッドが何らかの SQL をまとめている場合、同じデータに対する最初のクエリの後で大きな違いが見られない場合があります。各試行の前に、クエリ キャッシュをクリアすることを検討してください。