.NET应用程序一直以开发速度快、IDE功能强大作为卖点,理所当然我这种智商不高又期望快速开发的人当然首选它了。第一次尝试用.NET做整个机床的控制程序,平台不是太强大,赛扬2.4的CPU和512的内存,基本上够跑。经历两个多月的开发把底层的功能基本完善了,控制台程序看不出效率的问题,我很放心的使用WINDOWS FORMS完成剩下的界面。

当做到一定程度的时候,效率问题就逐步显现出来了,GUI界面很缓慢,令人很抓狂。在尝试了很多的方法和优化后,最终还是要到及床上进行实际的调试。昨天忙了一天,终于找到了问题所在。过程我就不详细多说了,解决问题最根本的还是找准了病根。

有时候我们可能想WINDOWS FORMS的GUI性能不太好,界面刷新老是很缓慢,比起MFC的程序有时候慢很多。当然这里有一些GUI库的问题,我们只能从另外的一面去优化。但其实微软已经做的够好,而很大程度上取决于我们怎么使用它。

找病根,有两种方法:一种是庸医所用的乱证乱下药,偶尔有效;一种是西医的科学化的方法,用数据说话。在当了一阵庸医以后,终于想尝试用工具来解决问题。

Resharper很可能很多人都用过吧,JetBrains公司还有一款产品用于性能分析的——dotTRACE。此工具比VS自带的性能测试工具好用多了。我用这个工具详细一测,立刻就找到了病根所在。当然选择正确的测试模式还是很有必要的,由于我开得多线程,所以需要用针对线程的测试模式,才能测得线程中函数调用的时间。

真是一针见血,找到了问题所在,立刻解决问题。

最后总结一下:

  • 不要盲目找问题,要找到工具来,用数据说话。
  • .NET GUI库有一些小的方面有性能问题(比如DataGridView等控件,但其实用好了速度还是很快的),但不足以影响到正常的工作,很多时候都是自己用法没对造成的。