Der Leistungsaufwand des Ausnahmebehandlungsmechanismus in C# ist nicht signifikant, wenn der Stapel flach ist, aber sein Leistungsverlust ist dennoch erwähnenswert.
Eine aktuelle Studie hat anhand eines Testprogramms gezeigt, dass die Verarbeitung einer Million Ausnahmen etwa 29914 Millisekunden dauert, was etwa 33 Ausnahmen pro Millisekunde entspricht. Dennoch ist die Verwendung von Ausnahmen anstelle von Rückkehrcodes in den meisten Fällen effizient genug.
Es ist jedoch wichtig zu beachten, dass Ausnahmen mindestens 30.000 Mal langsamer behandelt werden als Rückkehrcodes. Darüber hinaus handelt es sich bei diesen Daten nur um Mindestschätzungen, und in tatsächlichen Anwendungsszenarien wird ein zusätzlicher Leistungsaufwand auftreten.
Die Tests wurden auf einem Laptop mit einem Intel Core2 Duo T8100 @ 2,1 GHz-Prozessor unter Verwendung des .NET 4.0-Frameworks, Release-Builds und unter Ausschluss des Debuggers (der die Leistung erheblich beeinträchtigen kann) durchgeführt.
Das Folgende ist der im Experiment verwendete Testcode:
<code class="language-csharp">static void Main(string[] args) { int iterations = 1000000; Console.WriteLine("Starting " + iterations.ToString() + " iterations...\n"); var stopwatch = new Stopwatch(); // 测试异常 stopwatch.Reset(); stopwatch.Start(); for (int i = 1; i <= iterations; i++) { try { // 模拟异常抛出 throw new Exception(); } catch (Exception) { // 捕获异常 } } stopwatch.Stop(); Console.WriteLine("Exceptions took: " + stopwatch.ElapsedMilliseconds + "ms"); // 测试返回码 (此处应添加返回码测试代码) }</code>
(Hinweis: Im Originaltext fehlt der Rückgabecode-Testcodeteil, der Platzhalter wird hier beibehalten)
Das obige ist der detaillierte Inhalt vonWie viel langsamer sind C#-Ausnahmen als Rückgabecodes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!