Ich habe eine Schleife, die die gespeicherte Prozedur in einer Schleife mit über 40.000 Iterationen ausführt, etwa so:
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();
Dieser Code wird in einer Schleife aufgerufen, in der ich jede 1000ste Iteration abfange und die Zeit stoppe. Die Zeiten, die ich erhalte, sind unten aufgeführt:
[0]: "Started 0ms" [1]: "1000 erledigt 578.125ms"
[2]: "1000 done 921.875ms"
[3]: "1000 done 1328.125ms"
[4]: "1000 done 1734.375ms"
[5]: "1000 done 1140.625ms"
[6]: "1000 erledigt 1250ms"
[7]: "1000 erledigt 1703.125ms"
[8]: "1000 done 1718.75ms"
......
[31]: "1000 done 3234.375ms"
[32]: "1000 done 3390.625ms"
[33]: "1000 done 3453.125ms"
[34]: "1000 done 3609.375ms"
[35]: "1000 done 3765.625ms"
[36]: "1000 done 3796.875ms"
[37]: "1000 done 3968.75ms"
[38]: "1000 done 4093.75ms"
[39]: "1000 done 4203.125ms"
[40]: "1000 done 4546.875ms"
[41]: "1000 erledigt 4406.25ms"
[42]: "Angehalten mit insgesamt 101093.75ms 1515.625ms"
Hat jemand eine Idee, warum sich diese Ausführungszeiten verlängern? Ich muss diesen Code mit über einer Million Iterationen ausführen - bei der Geschwindigkeit, mit der er ausgeführt wird, dauert es eine Minute, um eine Iteration auszuführen...
Vielen Dank!