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个建议》陆敏技

  • 相关阅读:
    EF之DataBase添加新字段
    VS 发布MVC网站缺少视图
    解决IE下打印iframe时,页面比例变小的问题
    DataTable求列的最大值、最小值、平均值和样本数
    js的splice和delete
    js获取对象的属性个数
    placeholder
    prompt
    依赖注入
    highcharts离线导出图表
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4737859.html
Copyright © 2011-2022 走看看