C#中的异常处理机制在堆栈较浅的情况下性能开销并不显着,但其性能损耗仍值得关注。
一项近期研究通过测试程序表明,处理一百万次异常大约需要29914毫秒,即每毫秒处理约33次异常。尽管如此,在大多数情况下,使用异常替代返回码仍然足够高效。
然而,重要的是要注意,异常的处理速度至少比返回码慢30000倍。而且,这些数据仅为最小估算值,实际应用场景中还会产生额外的性能开销。
测试是在一台搭载Intel Core2 Duo T8100 @ 2.1 GHz处理器的笔记本电脑上进行的,使用.NET 4.0框架,发布版本,并排除了调试器(调试器会显着影响性能)。
以下是实验中使用的测试代码:
<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>
(注意:原文缺少返回码测试代码部分,此处保留了占位符)
以上是C#异常比返回代码慢得多?的详细内容。更多信息请关注PHP中文网其他相关文章!