Note 8.3 代码调优之性能优化
1.调优strategies
“代码行数与程序的资源占用和运行速度无必然联系”。
正确性总是第一位的,在保证正确性的前提下提高速度。
2.低效的原因
加粗样式
不必要的I/O:尽量使用内存
分页:CSAPP里有提到过,且内存越小分页影响越大。
系统调用:CSAPP也有讲到,尽量自己写服务。
3.调优-对象创建和复用(5种模式)
1)单例模式:只创建一个对象然后复用
2)flyweight模式/享元:内在状态(不变,可共享)和外在状态(可修改)
3)object pool模式
4)avoiding GC
5)object initialization
4.调优之strings
字符串处理中避免一些特定的函数(会降低性能),同时也有很多技巧(例如使用char array来代替string)
5.调优-logics,
loops, data type, expressions中的调优
6.调优-I/O,logging
(ppt 8.1.8节部分)
File类:检查、创建文件/目录
InputStream/Reader:输入
OutputStream/Writer:输出
抽象类filter:
典型使用方法:
缓冲读入文件:
BufferedReader
in=new BufferedReader(new FileReader(filename));
while((s=in.readLine())!=null)
do…
(readLine会删除换行符)
从内存读入:
StringReader
in=new StringReader(BufferedInputFile.read("…java"));
while((c=in.read())!=-1)
do…
格式化内存读入:
标准I/O:为了实现单一信息流
标准输入:System.in未被包装