关于优化的几点

今天上课,讲后台应用程序优化,老师讲的很好,从cpu、磁盘、网络三部分入手。晚上看了《深入理解计算机系统》第五章。

 

之前自己先考虑了一下,会从分析瓶颈、数据结构优化、设计模式应用角度——偏应用了。汗。

 

1. cpu处理流水线。取指、译码、执行、写回。

 

    提高流水线预测分支的效率;剔除数据相关性、提高流水线并发;

 

    拿出一个cpu专门处理网卡中断,其余的cpu每个一个进/线程;

 

    以下优化有什么问题:       

 

        void twiddle1()
        {
            *xp += *yp
            *xp += *yp
        }
        优化成:
        void twiddle2()
        {
            *xp += 2* *yp
        }

 

     预分配、预计算、内存复用、对象复用;

 

2. 随机写改成顺序写;mmap文件到内存。

 

3. select 遍历 fd;epoll使用rb-tree保存信息,并使用callback机制。

    但后者在大部分fd都有事件到来时并不比前者有优势,其优势在于同时只有比较少的客户端有读写事件时。

 

    网络环境比较稳定(内网)时使用ET方式、网络不稳定、碎包比较多时使用LT。

你可能感兴趣的:(关于优化的几点)