CPU时间测试函数
来源:互联网 发布:伺服编码器数据乱跳 编辑:程序博客网 时间:2024/06/05 20:50
很多时候,我们想要统计一段代码运行的时间,但是这段代码运行的时间很短很短,以至于用clock()等函数获得时间的方法几乎是无效的。
那么我们该粗和获得高时间呢?
很多Intel的CPU有一条获得系统时钟的指令。我们可以用这条指令来获得时间。
rdtsc.h
- #if defined(__i386__)
- static __inline__ unsigned long long rdtsc(void)
- {
- unsigned long long int x;
- __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
- return x;
- }
- #elif defined(__x86_64__)
- static __inline__ unsigned long long rdtsc(void)
- {
- unsigned hi, lo;
- __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
- return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
- }
- #elif defined(__powerpc__)
- static __inline__ unsigned long long rdtsc(void)
- {
- unsigned long long int result=0;
- unsigned long int upper, lower,tmp;
- __asm__ volatile(
- "0: \n"
- "\tmftbu %0 \n"
- "\tmftb %1 \n"
- "\tmftbu %2 \n"
- "\tcmpw %2,%0 \n"
- "\tbne 0b \n"
- : "=r"(upper),"=r"(lower),"=r"(tmp)
- );
- result = upper;
- result = result<<32;
- result = result|lower;
- return(result);
- }
- #endif
- #include <stdio.h>
- #include "rdtsc.h"
- int main(int argc, char* argv[])
- {
- unsigned long long start_time , end_time ;
- start_time = rdtsc();
- //do something...
- end_time = rdtsc();
- printf("%llu\n", end_time-start_time);
- return 0;
- }
《编程之美》中正是用这种方式获得高精度时间,进而控制任务管理器的显示。
0 0
- CPU时间测试函数
- 测试SQL Server执行时间和CPU时间
- 性能测试指标之CPU时间片
- 时间测试函数
- C++ 测试时间函数
- 测试函数运行时间
- 测试函数运行时间
- 时间模块常用函数测试
- Windows下时间测试函数
- Android客户端性能测试—CPU、启动时间(二)
- cpu 时间
- CPU时间
- CPU测试
- cpu测试
- GPU上和CPU上执行函数时间比较
- 用CPU计时器统计CUDA核函数的运行时间
- 一个测试运行时间的函数
- VC程序运行时间的测试函数
- shuipFCMS后台去版权
- RPC简单使用
- 最大开源项目:玩游戏就能学会编程
- js中使用Cookie详解和实例
- js(或jQuery)实用代码段
- CPU时间测试函数
- ubuntu在vmware 设置桥接上网静态IP上网
- Swift官方资料
- mac os x10.9.4下搭建django开发环境
- poj 1088 滑雪
- 说出作用域public,private,protected,以及不写时的区别
- win7安装mysql
- ListView与CheckBox的综合使用
- 复杂链表的复制