性能优化杂谈二

来源:互联网 发布:scrach源码 编辑:程序博客网 时间:2024/05/17 01:29

 这里的性能优化主要指两个方面的优化,程序运行时占用的内存空间和程序运行时占用的CPU时间。       

 记得有一次面试一家公司时,考官让我谈谈如何进行性能优化。那家公司是做Linux服务器编程的,我谈了自己想到的几个方面,后来自己做了考官以后,有时也把这个开放性的题目丢给面试者,听听他们的回答,有的回答的很精彩,有的回答的很有创意性。今天我就来总结一下如何优化程序的性能。

1.改进程序中使用的算法,这个我想是程序员能想到的第一个方法,也是很有效的一个办法,不再赘述。

2.优化业务流程。

          看web开发的发展史就明白了,刚开始就是纯粹的B/S开发,所有的东西都放到服务器端去处理,客户端只做展现,也就是瘦客户端。后来随着业务越来越复杂,全部放到服务器端,服务器的压力越来越大,随着时代的发展,PC性能有了很大的提升,如果PC只做页面展示,显然浪费了许多性能,于是把服务器端一部分工作移到客户端去处理,就出现了胖客户端。

       通过梳理程序业务流程,减少和更改几个操作步骤,能提升不少性能,但也可能要改动大量代码。系统由单机版改成网络版,再从网络版改成分布式,都可以看做是在做业务流程做优化。

3.想办法减少IO操作次数,减少网络读写次数。在程序的运行过程中,IO操作可以说是最耗时间的,减少或者合并IO操作能带来的性能的提示。使用数据库代替IO访问,也会提升不少性能。

4.利用以空间换时间思想,使用各种Cache.

5.使用多线程,多进程。原来由一个人的工作改成由N个人一起干,当然能带来性能的提升。

6.使用内存池,连接池,对象池技术。(减少对象分配释放时间,减少登陆连接时间。。。).

7.使用引用计数(COM),写时拷贝(CString)。减少对象个数。

8.使用第三方库,有些时候,既然自己本事不够,那就是借助外部专业的力量吧。当然有时要花费不少银子,有些程序,可以把部分模块替换成第三方类库能带来很大系能提升。比如,我们系统中用到一个手写识别功能,自己写的手写识别功能不仅性能低,而且还不稳定,识别率低下,在这种情况下,可以购买第三方专业公司的手写识别模块。

9. 优化操作系统系统的性能,修改操作系统或注册表的一些参数。也能提升不少性能。现在的360安全卫士,以前的Windows优化大师,超级兔子不都是通过修改系统参数来提升整体系统性能么。

10.使用带有优化功能的编译器,去编译我们的程序。也能提高不少程序运行时的性能。

11.最后还有一条最行之有效的方法,使用性能更高的硬件哈。增加内存,提高CPU的性能。

0 0