次のように、40,000回を超える反復でループ内でストアドプロシージャを実行するループがあります。
SqlCommand command = new SqlCommand("WriteDataToDB");
command.Connection = _connection;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@SignalID", SqlDbType.Int).Value = Arg_Signal.SignalID;
command.Parameters.Add("@SignalStrength", SqlDbType.Float).Value = Arg_Signal.SignalSiggestion;
command.Parameters.Add("@Time", SqlDbType.BigInt).Value = Arg_Signal.TimeWasHit;
command.Parameters.Add("@Value", SqlDbType.Float).Value = Arg_Signal.ValueWasHit;
if (command.Connection.State != ConnectionState.Open)
{
command.Connection.Open();
}
command.ExecuteNonQuery();
このコードは、1000 回の反復ごとにインターセプトして時間を計測するループから呼び出されます。私が取得する時間は以下のとおりです。
[0]: "開始 0ms" [1]: "1000 完了 578.125ms"
[2]: "1000 完了 921.875ms"
[3]: "1000 完了 1328.125ms"
[4]: "1000 完了 1734.375ms"
[5]: "1000 完了 1140.625ms"
[6]: 「1000 完了 1250 ミリ秒」
[7]: "1000 完了 1703.125ms"
[8]: "1000 完了 1718.75ms"
……
[31]: "1000 完了 3234.375ms"
[32]: "1000 完了 3390.625ms"
[33]: "1000 完了 3453.125ms"
[34]: "1000 完了 3609.375ms"
[35]: "1000 完了 3765.625ms"
[36]: "1000 完了 3796.875ms"
[37]: "1000 完了 3968.75ms"
[38]: 「1000 完了 4093.75ms」
[39]: 「1000 完了 4203.125ms」
[40]: 「1000 完了 4546.875ms」
[41]: 「1000 完了 4406.25ms」
[42]: 「合計 101093.75ms 1515.625ms で停止」
これらの実行時間が増加している理由を知っている人はいますか? このコードを 100 万回以上反復して実行する必要があります。
どうもありがとう