0

これは、私が作成した以前の質問からのフォローアップの質問になります: ストップウォッチの異なるタイミングはなぜですか?

私はWebサービス内でストップウォッチを使用していますが、いくつかのメソッドにかかる時間を知るためだけに、次のようなプログラムを作成しました:(ASP.NETを使用したC#でのプログラム)

Stopwatch swK=new Stopwatch();
swK.Start();
do
{               
method1(intvar1,intvar2,intvar3);
var_1=method2(intvar1,doublevar1, doublevar2);
flag= Compara (doublevar3,intvar1,doublevar4);
}
while (flag != 1);
swK.Stop();
double tim2 = swK.Elapsed.TotalMilliseconds;

このようにして、tim2はミリ秒単位で「while」内のすべてのメソッドからかかる時間を持ちます;私が理解できないのは、最初にまだ時間がかかる方法です。ミリ秒、

だから私の質問は、最初に時間がかかるいくつかのメソッドのプロセスの時間を測定しているだけなのですか?、それはアセンブリ、ジーターなどのせいですか?

また、他の要因の影響を受けていない私の方法を測定する別の方法はありますか?

4

2 に答える 2

3

.NET では、最初は時間がかかり、その後の操作はより高速になることがたくさんあります。データベースへの接続、Web サービスへの接続、ファイル システムへのアタッチなど。コードを変更して再実行する場合は特に、JIT コンパイルが問題になることさえあります。または、ランタイムがオブジェクトを割り当ておよび割り当て解除する方法だけでも。

舞台裏では、.NET 開発者として考える必要のない多くの "配管" が行われています。また、接続プーリングのような最適化により、その後の試行で気付かないうちに速度が向上します。

あなたの質問が表現されているように、それはそのような種類のもののいずれかである可能性があります. ここでは必ずしもこれに明確に答えることはできません。これらのメソッドの内部で何起こっているのかはわかりませんが、上記がこれを引き起こす原因に光を当てることを願っています.

Visual Studio では (適切なバージョンを使用している場合)、プロファイリングを使用してボトルネックを見つけることができます。

于 2012-10-29T19:14:00.660 に答える