• 【转】编写高质量代码改善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个建议》陆敏技

  • 相关阅读:
    operator[],识别读操作和写操作
    COW写时复制
    嵌套类,PIMPL
    类型转换
    String类运算符重载,自己实现
    socket的几个配置函数
    TCP三次握手,四次挥手,状态变迁图
    运算符重载
    友元
    P4016 负载平衡问题(最小费用最大流)
  • 原文地址:https://www.cnblogs.com/farmer-y/p/7992813.html
Copyright © 2020-2023  润新知