2208-程序计时方法
常用的程序计时方法,总结来自师兄
方法1:time
1 |
|
方法2:gettimeofday
1 |
|
方法3:clock_gettime
1 |
|
方法4:chrono库
1 |
|
方法5:rdtsc
最精准也是最难用的方法
1 |
|
使用限制:
- 机器需要有constant_tsc的特性,使用:
cat /proc/cpu_info | grep constant_tsc
命令可以确定是否有该特性 - 乱序执行核能会打乱时钟周期的测量,必要时需要制造“依赖指令”去避免乱序执行
- 必要时需要使用
memory barrier
cat /proc/cpuinfo | grep rdtscp
如果开启,可以使用rdtscp,更精准一点。使用方法基本一致:1
uint64_t get_tscp() { uint64_t a, d; __asm__ volatile("rdtscp" : "=a"(a), "=d"(d)); return (d << 32) | a; }
小结
- 如果使用C++,那么使用
chrono
库是最好的选择,相信STL不会翻大车 - 如果机器有
constant tsc
特性,那么可以使用rdtsc方法 - 如果没有,那么使用
gettimeofday
时一个比较稳定的方法
2208-程序计时方法
https://piscesfinalizer.github.io/2022/08/04/程序计时方法/