我们在做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.非法地址访问,不存在/只读用来写等