关于代码优化

我们在做c coding的时候,如何才能才能更高效的呢?

1.读写数据尽量分开

因为CPU在执行内存指令的时候,是以cache line为单位夹在的,比如32或64个字节。
如果读写交叉,很容易造成cache line频繁失效

2.局部变量到底是好是坏,太大了是否可以?

每次夹在函数栈上的东西都要入cache

3.减少code path,检查不必要的调用

4.频繁调用/相关联的函数聚集到一起,一次型夹在到cpu cache

5.数据结构的cache line对其

如果是64 bit的cache line,就让首地址%64 =0

6.参数不能太多,否则参数寄存器就不够用了

7. 延迟计算,需要的时候才计算

8.提前计算+复用结果

9. per-CPU 变量

10.分支预测likely unlikely

11.进程切换会刷tlb,cr3寄存器

12.如何调试coredump

1.根据栈信息
2.根据挂的地址信息和nm出来的结果对比
3.copy越界
4.非法地址访问,不存在/只读用来写等