4 Stimmen

Der Aufruf von sqlCommand in einer Schleife erhöht die Ausführungszeit bei jedem Schritt

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!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X