`
caobihole
  • 浏览: 948586 次
文章分类
社区版块
存档分类
最新评论

如何精确计算出一个算法的CPU运行时间?

 
阅读更多

http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=211457


你需要多精确?
GetTickCount可以到18-20ms进度
timeGetTime可以到1ms精度
……

当然这些都不是C or c++ 标准支持的。

那么就要祭出最牛奔的方法,
直接读取CPU开机以来执行的机器周期数,
一条汇编指令:RDTSC (就是 ReaD TimeStamp Count)
精度可以达到ns级别。(准确地说精度是1 / 你的CPU的时钟频率,这也是极限)




long HighStart,LowStart,HighEnd,LowEnd;
long numhigh,numlow;

__asm
{
RDTSC
mov HighStart, edx
mov LowStart, eax

// put your time-consuming code here ……
RDTSC
mov HighEnd, edx
mov LowEnd, eax
//获取两次计数器值得差
sub eax, LowStart
cmp eax, 0
jg L1
neg eax
jmp L2

L1: mov numlow, eax
L2: sbb edx, HighStart
mov numhigh, edx

}
__int64 timer =(numhigh<<32) + numlow; //得出最终结果

分享到:
评论

相关推荐

    superpi 圆周率计算 超级π cpu性能测试

    Super PI是一个计算圆周率精确到小数点以后的指定数位(最大3200万)的计算机程序。该程序采用高斯-勒让德算法并且于1995年被金田康正使用在Windows环境下计算出精确到2的32次方的圆周率。 Super PI被许多超频玩家用...

    操作系统,关于进程调度与死锁

    操作系统,关于进程调度与死锁,好东西啊,快点来下载啊,晚了就找不到了

    软件设计规范

    一个是数据的复杂性(内在互相关系),一个是计算方法(步骤和缓冲)。从宏观角度,数据关系是更根本的东西。目前的高级语言,变量和流程(顺序、分支-步骤;循环-缓冲和迭代)研究的多,而数据复杂性构造不足。 ...

    StressMark压力测试软件

    1. 在多线程环境下测试一个软件模块、一段关键算法是否可以正确运行,即代码是否是多线程安全的。 2. 测试一个软件模块、一段关键算法在并发执行时的效率,如每个线程的平均执行时间等。 3. 模拟一个服务程序的多...

    c语言编写单片机技巧

    当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据...

    JAVA上百实例源码以及开源项目源代码

    JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器 Java编写的HTML浏览器源代码,一个很...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    EDA/PLD中的关于C++常用排序法研究

     不过这不精确的 多次运行时间是不同的 和CPU 进程有关吧  (先总结一下:以下算法以时间和空间以及编码难度,以及实用性方面来看,快速排序法是最优秀的!推荐!~  但是希尔排序又是最经典的一个,所以建议...

    飞雪桌面日历 7.6绿色

    计算生辰八字,请采用第2种算法(以节气交接日作为起点),更细致的查寻请使用“日历转换”功能,可以精确到分钟。   18.无法获取天气数据 进入天气预报设置窗口,尝试改变天气服务器.另外“服务器:3”仅能提供的...

    Facebook AI实验室开源的相似性搜索库Faiss.zip

    概括的说,该论文的主要突破有:给出一个可在GPU上运行的k-selection算法。它可在快速寄存奇储器中运行,并且其灵活性能使它能与其他内核一起使用。对此我们给出了复杂性分析;在GPU上实现的为精确和近似的k最近邻...

    python cookbook(第3版)

    3.13 计算最后一个周五的日期 3.14 计算当前月份的日期范围 3.15 字符串转换为日期 3.16 结合时区的日期操作 第四章:迭代器与生成器 4.1 手动遍历迭代器 4.2 代理迭代 4.3 使用生成器创建新的迭代模式 ...

    (重要)AIX command 使用总结.txt

    //用下面命令可以得到一个硬盘的微码级别: # lscfg -vl pdisk* //IBM小型机AIX5.1操作系统密码文件丢失或者误删的恢复方法 进入维护模式: 1、将安装盘第一张放入光驱; 重启小型机选择主控台,按屏幕上提示的数字;...

    Oracle9i的init.ora参数中文说明

    说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。 值范围: 根据操作系统而定。 默认值 : 20 dispatchers: 说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该...

    matlab的代码在相机上实现-fastms:分段平滑Mumford-Shah函数的实时最小化

    当前的最新方法是使用启发式算法引入其他人工参数(这会导致参数敏感的结果),或者对于单个VGA彩色图像需要几分钟的运行时间,有关更多详细信息,请参见上文。 此处实施的方法可产生最先进的质量结果并实时运行。 ...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    这两点是一个数据库软件的基础功能,作为业务的基石,任何一点抖动或者错误都可能对业务造成巨大的影响。目前已经有大量的用户在线上使用 TiDB,这些用户的数据量在不断增加、业务也在不断演进。 提升 TiDB 在大...

    51单片机C语言编程基础及实例

    我们通常又将各二极与一个字节的 8 位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7), 相应 8 个发光二极管正好与单片机一个端口 Pn 的 8 个引脚连接,这样单片机就可以通过引脚输出高 低电平控制 8 个...

    winrar3.7 Beta8

    此文档包括 WinRAR 多功能综合压缩文件管理器 &lt;br&gt; WinRAR 功能: * WinRAR 引入了一个原创的压缩算法。它提供了比其它 PC 压缩工具更高 的压缩率,特别适用于处理可执行文件,对象库,大的文本文件...

Global site tag (gtag.js) - Google Analytics