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

  • 相关阅读:
    Apache工作原理
    Mysql主从复制
    Apache 工作模式
    Codeforces 932E Team Work
    【TJOI2018】教科书般的亵渎
    Codeforces 960G Bandit Blues
    斯特林数&斯特林反演
    【BZOJ4916】神犇与蒟蒻
    【BZOJ3944】Sum
    【BZOJ4805】欧拉函数求和
  • 原文地址:https://www.cnblogs.com/farmer-y/p/7992813.html
Copyright © 2020-2023  润新知