代码性能低下的原因
发布于:2018-02-02 17:33  浏览:

系统的性能是最差的部分所决定的,我们只能尽量期望让别人别写那些太过愚蠢的代码来拖累整个系统不好意思,最近老眼花。其实你这个问题同时还涉及到了查找算法。这些细节问题的确需要注意。

我前几天还干过一个坏事,由于没法改别人的代码,所以在一个循环里把异常吃掉。后来发现操作的响应时间慢了几秒。一查日志,发现我一共吃掉了进30个异常,耍响应时间慢了2-3秒左右。

很多时候不是我们不想写出好代码,而是自已太懒。以前曾经亲身体会到过string.Equals的性能提高,仅仅因为一个方法的改变,把一个很常用的程序性能提高了10几倍。

我自己在写程序的时候,在性能方面主要是注意两个问题:
1.会被频繁调用的代码和大批量处理数据的代码,要尽可能的快
2.界面响应要及时。
第一问题很简单,如果被频繁调用的代码性能低下,你的程序当然快不了。
第二个问题就是当你的程序的确难以更快的时候,要让你的程序运行时有一个界面响应。一个很简单的例子,如果你的某个数据处理程序要运行10小时才能完成,如果有一个进度条在蜗牛般的爬行,用户也只不过是看着表,直到10小时。但如果你的一个数据处理程序需要5分钟就能完成,但这5分钟里你得程序什么反应都没有,你觉得用户会怎么处理?如果是我的话,肯定会丛任务管理器里把它Kill了,然后再次运行、再Kill、在运行...,最后给你打电话,说你得程序运行到这儿就死掉了。string的静态方法Equals方法首先会检查两个引用是否指向同一个对象,如果是则不再比较字符集,所以会性能比较高。
如果有大量的字符串比较可以考虑使用string的静态方法IsInterned方法与Intern,用字符串驻留机制,让后相同的string只有一个引用,这样再用string.Equals方法比较直接比较引用,性能会提高很多,同时接节约内存