hehezhou 2012-04-18
1 重型的对象,比如数据库的connection,和一些JMSFactory,尽量做到重用,不要用的时候在new,可以先用起来,复用的时候直接从缓存中拿
2 不要用Exception控制流程,因为new 一个Exception的开销是非常大的
3 生命周期长的对象,如果用不着可以在用完后设置为null,便于垃圾回收
4 数据库能批量则批量处理,循环crud是很费IO的
5 加锁尽量细粒度,感觉concurrent的锁对象性能不错,有空纤细研究下concurrent类
6 数据库对于经常查询的数据的条件,index是必要的,但是过多的index会减慢update和insert的速度。
7 io中尽量用buffer,减少IO交互次数.
8 使用缓存,内存数据库,或者集群来提高系统的吞吐量和性能。
9 一般系统产生大量数据后,瓶颈经常是数据库io产生的,前面的index只是一种小的手术。要在结构上提高数据库读写性能,还是拆分数据库,读写分离,数据库大数据表分拆成多个分布式小数据表,等等具体的思路还是拆分,分布式。
10 旧的IO API,因为是阻塞式的,如果处理socket,请启用多线程去handle,否则如果一个请求没有结束,其他的请求会被阻塞住,这样已经很接近非阻塞IO的处理速度了。
今天懒了,不想了。。。