之前的一个重要基础工程每次进入单步调试,总会在装载XML之后的解析工作时异常缓慢,往往需要7秒,而直接运行则只需要1秒,无论Debug还是Release.

后来一点点把代码注释,单步,注释再单步,终于确定了问题所在:

首先在一个重复运算的循环内部有如下语句:

  var bPreDay = GetAttributeText("PreDay", "0").ToInt()>0;  

此函数是一个扩展函数,实现如下:

 public static string GetAttributeText(this XmlNode arg_node, string arg_strAttribute, string arg_strDefault = ""){var strRet = arg_strDefault;try{return (arg_node.Attributes[arg_strAttribute] as XmlAttribute).InnerText;}catch (Exception ex){                             }          return strRet;}

这是一个老旧的历史代码,无疑其实现非常糟糕。竟然吞咽了异常!
此函数在初期书写时也许觉得可以不用判断,偷懒,结果不停重复调用时,由于arg_node.Attributes[arg_strAttribute]
返回null,造成此函数不停进入exception,消耗了大量时间资源。
我们现在将函数改为如下形式:

 public static string GetAttributeText(this XmlNode arg_node, string arg_strAttribute, string arg_strDefault = ""){var attr = arg_node.Attributes[arg_strAttribute];if (null == attr)return arg_strDefault;if (attr is XmlAttribute)return (attr as XmlAttribute).InnerText;elsethrow new NotSupportedException();}

转载于:https://www.cnblogs.com/norsd/p/6359306.html

令人苦恼的调试缓慢问题相关推荐

  1. Coplay驱动器调试连接不上

    ## 2. Coplay驱动器的调试错误汇总 电机驱动技术似乎已经成熟,其入门的门槛在进一步降低.正确的配置总是千篇一律,而错误总是充满着千奇百怪.然而,对于长期从事机械设计.机构综合.理论分析的研究 ...

  2. 14个你可能不知道的JavaScript调试技巧

    以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug ...

  3. 常用的几个JavaScript调试技巧

    1. debugger 除了console.log, debugger是我们最喜欢.快速且肮脏的调试工具.执行代码后,Chrome会在执行时自动停止.你甚至可以把它封装成条件,只在需要时才运行. if ...

  4. 将 Linux 移植到 M1 Mac 真的太难了!

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? [CSDN 编者按]自去年苹果自研 M1 芯片发布之后,激发了无数用户的体验热情,与此同时,也吸引大批开 ...

  5. 为什么那么多人要学习python?这篇文章讲清楚了

    导读:随着机器学习的兴起,Python 逐步成为了「最受欢迎」的语言.它简单易用.逻辑明确并拥有海量的扩展包,因此其不仅成为机器学习与数据科学的首选语言,同时在网页.数据爬取可科学研究等方面成为不二选 ...

  6. 面试官:你知道 Docker 有哪些优缺点嘛?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Docker解决的问题 由于不同的机器有不同的操作系统,以及不同的 ...

  7. Erlang(起个中文名:易浪)不能错过的盛宴

    评:erlang(起个中文名:易浪),在穿戴设备技术,云技术,大数据,游戏服务器等等高并发分布式必然大有用处,这个语言必火!-传统语言除了java和c,其他的必然会死去,今后一定会出现新的类erlan ...

  8. wireshark应用--wireshark原来那么简单

    wireshark应用 github地址: github wireshark使用 wireshark视图以及各个字段说明 分析包的详细信息 后期会通过到处文本的方式进行注释,前期先使用图片,这样容易用 ...

  9. Riverbed调查:惊人发现95%的中国受访者高度关注应用性能

    Riverbed公司日前宣布2015 Riverbed全球应用性能调查结果,本次调查是首次针对应用性能对业务的影响而发起的面向业务决策者的全球调查.该调查揭示了业务需求与IT现有交付能力之间的巨大性能 ...

最新文章

  1. 【浙大出品】基于扩展FPN的小目标检测方法
  2. 链路层 ---《TCP/IP协议》卷一
  3. python 38day--CSS简介
  4. java按两列输出_有没有一种简单的方法可以将两列输出到Java中的控制台? - java...
  5. Gitlab 服务器搭建
  6. 机器学习?有无监督、弱监督、半监督、强化、多示例学习是什么
  7. 微信HTML5页面设计建议
  8. java-网页404(个例)
  9. 计算计控制系统2.0
  10. Proteus简单入门教程以及使用Proteus仿真STM32F103单片机和Arduino单片机
  11. 财务舞弊(本福特——KS验证)
  12. 欧拉操作系统(openEuler)简介
  13. 利用python求行列式、矩阵的秩和逆
  14. 四川大学江安校区计算机学院照片,几张图告诉你四川大学江安校区颜值到底有多高...
  15. [Python]学习笔记5——For循环
  16. 中国三维数字城市将遵循武汉标准
  17. 百度热议删除工具 v1.1.3.1
  18. 生产者消费者操作系统实验报告用C语言来实现
  19. oracle mrp进程起不来,DataGuard中MRP无法启动的问题分析和解决
  20. Android ListView优化之局部刷新(非notifyDataSetChanged()方式)

热门文章

  1. ARC 没有自动释放内存
  2. matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
  3. 我理解的session和cookie
  4. OpenCV中CV_IS_MAT_CONT(src->type dst->type) 的含义
  5. MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
  6. 对等网不要求文件服务器,对等网文件共享技术研究与应用
  7. VB.NET 从main函数里启动窗口
  8. KVM中Virtio网络的演化之路
  9. DPDK有关变量(二)
  10. 解决ubuntu 远程连接问题