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

建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一相关推荐

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

    建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程.应该尽量在循环当中对异常发生的一些条 ...

  2. 【转】编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内...

    建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程.应该尽量在循环当中对异常发生的一些条 ...

  3. [V8]找出可能影响性能的代码(模式)

    原文地址:Tracing Patterns that Might Hinder Performance 原文作者:Jakub Rożek 译文出自:掘金翻译计划 本文永久链接:github.com/x ...

  4. 在2D数组上进行迭代时,为什么循环顺序会影响性能?

    本文翻译自:Why does the order of the loops affect performance when iterating over a 2D array? Below are t ...

  5. 《编写高质量代码:改善c程序代码的125个建议》——建议20-6:尽量将循环嵌套控制在3 层以内...

    本节书摘来自华章计算机<编写高质量代码:改善c程序代码的125个建议>一书中的第3章,建议20-6,作者:马 伟 更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  6. 循环增加li id_循环老化对于锂离子电池中锂和电解液分布的影响

    锂离子电池在循环的过程中持续的界面副反应,会引起电解液消耗和活性Li的损失.同时在锂离子电池内部由于温度.电流和压力等因素的不均匀性,会导致在锂离子电池内部的副反应也存在明显的不均匀性. 近日,德国慕 ...

  7. java代码异常处理会影响性能_编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理...

    原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保留下! 文章宗旨:Talk is cheap show me the code. 大成若缺,其 ...

  8. 流言粉碎机:JAVA使用 try catch会影响性能

    流言粉碎机:JAVA使用 try catch会影响性能 一.JVM 异常处理逻辑 二.关于JVM的编译优化 1. 分层编译 2. 即时编译器 1. 解释模式 2. 编译模式 3. 提前编译器:jaot ...

  9. 别被骗了,try-catch语句真的会影响性能吗?

    前言 不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能. 然而,事实真的如此么?我们对try catch 应该畏之如猛虎么? 一.JVM 异常处理逻辑 Java 程序 ...

最新文章

  1. 启程 - 《每日五分钟搞定大数据》
  2. SparkStreaming使用checkpoint存在的问题及解决方案
  3. MySQL数据库初识(基础语句)
  4. 计算机桌面是是在哪个盘,电脑虚拟内存是设置在哪个盘的
  5. 如何进行云主机迁移?看这一篇文章就够了!
  6. C库宏-offsetof()
  7. 【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题
  8. [Codeforces673A]Bear and Game(水题,思路)
  9. 我的bolg,我的收获(MVC首次接触)
  10. (31)System Verilog类class详解
  11. linux中搭建java开发环境
  12. 吴伯凡-认知方法论-既然认知意味着痛苦,为什么选择认知?
  13. rss订阅,全文阅读,渴望大家发贴的时候在RSS中总是显示全文
  14. HttpClient模拟登陆并获取指定页面的内容
  15. 【动态规划】CH_0103 最短Hamilton路径
  16. LVGL系列(四)概述 之 位置、尺寸和布局
  17. Python实例---爬取下载喜马拉雅音频文件
  18. 微型计算机基础知识答案,第1章 微型计算机基础知识 题库和答案.doc
  19. 操作系统学习(一)(B站视频)
  20. ecmall后台拿Shell

热门文章

  1. 配置maven私服nexus
  2. ImportError: cannot import name ‘xxx‘ from ‘xxx‘
  3. adb命令行打开Android settings
  4. python Excel xlwt 富文本 同一单元格内设置不同样式
  5. 声音定位系统中一些问题
  6. 前后端分离项目-我爱蜗家网站平台
  7. 计算机专业毕业自我鉴定800字,计算机专业毕业自我鉴定范文
  8. 练习-Java多路分支之月份天数计算
  9. coreldraw怎么画猴子_小猴头像简笔画【CDR11设计制作逼真的小猴头像实例教程】...
  10. SHA 和 RSA 的区别