zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内

    建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内

     如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一些条件进行判断,然后根据条件进行处理。

    做个测试:

                Stopwatch watch = Stopwatch.StartNew();
                int x = 0;
                for (int i = 0; i < 10000; i++)
                {
                    try
                    {
                        int j = i / x;
                    }
                    catch
                    {
                    }
                }
                Console.WriteLine(watch.ElapsedMilliseconds);
    
                watch = Stopwatch.StartNew();
                for (int i = 0; i < 10000; i++)
                {
                    if (x == 0)
                    {
                        continue;
                    }
                    int j = i / x;
                }
                Console.WriteLine(watch.ElapsedMilliseconds);
                Console.ReadKey();

    输出为:

    796

    0

    以上代码中,我们预见了代码肯能会发生DivideByZeroException异常,于是,调正策略,对异常发生的条件进行了特殊处理:Continue让效率得到了极大的提升。

    转自:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    javascript
    vue-cli3 按需加载loading,服务的方式调用
    chrome devTool
    vuex
    git
    DNS寻址以及IP解析
    es6小记
    webpack 安装vue(两种代码模式compiler 和runtime)
    游戏屏幕朝向
    C#读写Json
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4737859.html
Copyright © 2011-2022 走看看