纳秒级cpu优化&rdtsc测试
This is a page about »纳秒级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
rdtsc参考01
rdtsc demo
使用 rdtsc 指令进行时钟周期级测量
rdtsc 参考02
Pitfalls of TSC usage
rdtsc 参考03
rdtsc 参考04
rdtsc 参考05
rdtsc 参考06
rdtsc 参考07
rdtsc 参考08
后面的话,其实这部分涉及很多汇编,可以很好的作为 汇编<—>c 作为偏操作系c/cpp 开发而言,这很需要!!! (讲给自己的话)