【Unix编程艺术】第12章 优化

来源:互联网 发布:iphone6在线软件 编辑:程序博客网 时间:2024/06/06 10:02

12章 优化

Unix经验告诉我们最主要的就是如何知道不去优化,最强大的优化工具就是不做优化(摩尔定律)。 

如果仅仅是为了减少资源使用的一个常数部分而优化是不值得的,更明智的做法是把高次的指数级降下来。

善用profiler估量程序,并谨记工具误差,降低误差影响的一个方法是在相同负载下多次profiler

最有效的代码优化方法是保持代码短小简单,永远不要将核心数据结构和时间关键循环抛出缓存。

性能往往受限于IO(尤其是网络程序),经验法则是尽可能降低时延:对可以共享启动开销的失误进行批处理;允许事务重叠;缓存

优化的策略

1.批操作

积累更新数量的测量进行批处理,

例如named面对上千万的请求,把访问都放在内存缓存,减少对磁盘的IO,减少时延。

又例如roguelike程序使用X server 和 curse每隔一个时段进行屏幕更新组织,这个如背地话话的CS模式,减少传输的时延,更新的对cpu 磁盘io的密集。

2.重叠操作

等待响应结果与阻塞 是一件痛苦的事情,重叠操作重点是异步数量返回,

例如,pop3客户端与服务器处理请求是一步一步处理,处理完一个再处理一个,IMAP协议客户端可以发出请求,每个请求都有一个标记,等待一个请求回来就立刻处理,不需要等待全部结果回来。

3.缓存操作结果

python解析器,运行时会把源码,编译后存到磁盘上,直到被修改,这个需要每次检测文件修改与创建的时间戳,named也是一个例子,把访问的域名映射缓存下来,问题在于,在频繁更新,会造成不稳定性,有差异,

0 0