纳秒级cpu优化&rdtsc测试
纳秒级cpu优化&rdtsc测试
起因:看了一段演讲视频,感觉讲的偏底层&基础
除法比乘法慢的原因 访问对齐数据更高效 访问松散数据导致cache命中率低下 访问矩阵元素不要跨行访问,要逐行访问 → 编写 cache 友好代码的 第一原则:局部性原则 授人以渔:纳米级优化第一守则:防止编译器好心帮倒忙; 第二守则:禁止CPU调频,否则看不出优化的效果; 第三守则:使用专业工具精准测量-Intel Vtune
内存对其与内存不对其
结构体的定义
松散的结构体不仅浪费内存而且访问效率很低。
`struct t1{ int x; char testName[Length]; };
struct t2{ int x; const char* testName; }; `> 多核加剧了 CPU与内存之间访问的压力
纳秒级调优守则
- 编译器优化问题
防止编译器好心干坏事
如果调用的函数返回结果没有使用,可能编译器会抛弃这个函数,造成执行结果没有差别
- 禁止CPU 调频
- 使用专业工具:VTUNE PROFILEPROFILER
后面的话,其实这部分涉及很多汇编,可以很好的作为 汇编<—>c 作为偏操作系c/cpp 开发而言,这很需要!!! (讲给自己的话)