张不大的博客

纳秒级cpu优化&rdtsc测试

This is a page about »纳秒级cpu优化&rdtsc测试«.

纳秒级cpu优化&rdtsc测试

起因:看了一段演讲视频,感觉讲的偏底层&基础

  1. 除法比乘法慢的原因
  2. 访问对齐数据更高效
  3. 访问松散数据导致cache命中率低下
  4. 访问矩阵元素不要跨行访问,要逐行访问 → 编写 cache 友好代码的
  5. 第一原则:局部性原则 授人以渔:纳米级优化第一守则:防止编译器好心帮倒忙;
  6. 第二守则:禁止CPU调频,否则看不出优化的效果;
  7. 第三守则:使用专业工具精准测量-Intel Vtune

内存对其与内存不对其

结构体的定义

松散的结构体不仅浪费内存而且访问效率很低。

struct t1{
	int x;
	char testName[Length];
};

struct t2{
	int x;
	const char* testName;
};

多核加剧了 CPU与内存之间访问的压力

纳秒级调优守则

  1. 编译器优化问题

防止编译器好心干坏事

如果调用的函数返回结果没有使用,可能编译器会抛弃这个函数,造成执行结果没有差别

  1. 禁止CPU 调频

  2. 使用专业工具: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 开发而言,这很需要!!! (讲给自己的话)

#c/c++