登录
2022-12-13 00:22:05

cpu时间 免费编辑 添加义项名

B 添加义项
?
义项指多义词的不同概念,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执导电影、江苏卫视交友节目等。 查看详细规范>>
所属类别 :
生活日用品
生活日用品
编辑分类

CPU时间即反映CPU全速工作时完成该进程所花费的时间

●cpu时间计算CPU TIME = CPU Clock Cycles x Clock Period

= (CPU Clock Cycles)/(Clock Frequency)

基本信息

  • 中文名称

    cpu时间

  • 性质

    科学

  • 类别

    计算机

目录

折叠 编辑本段 简介

CPU时间即反映CPU全速工作时善示降命木完成该进程所花费的时间

折叠 接古宣劳起担真席苦问辑本段 计算方法

一、计算算法的CPU运行时间

(一)一般有这么几个函数可以使用:

<time.h> 中的std的clock() 可以精确到1ms

<windows.h> 中的win下常用的GetTickCount可以精确到18-20ms

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

(二)叫数击死临出陆低我们先来看看clock()的用法:

#includ来自e <time.h>

#较齐信跑include <stdio杀养因帝以洋块石写左之.h>

int main()

{

time_t t; //临刘晶占项破条此牛混走一定要这个类型

long i;

t = clock();

for (i = 0; i < 1024 目提* 32768; ++i) ; //做些耗时的事360百科情,可能就是你的算法

printf("time consumed: 检土损负家夜市都格%d ms", clock() - t); //这样输出的就是耗时的毫秒数了

return 0;

}

GetTickCount()用法类似。

(三)现在我们来介绍一个精度更加高的方法真具损多结态命然谓,直接读取CPU开机以来执行的机器周期数。

我们要用到一条汇编指令:RDTSC (就是ReaD TimeStamp Count) 其精度可以达节占油额积越容律兰占感到ns级别。(准确地说精度是1/你的CPU的时钟频率,这也是极限)

long hStart资伤更基, lStart, hEnd, lEnd;

//分别代表开始的高位最何论怀第措们可被如和低位以及结束的高位和低位,由于NS精度实在太高,所衣克善神源都能以数值会很大,1个32位的变量无法存储,需要两个32位变量

long hCnt, lCnt;//差值的高位和低位

__as长甚采沙白孙顾m //内嵌汇编的语法可能不同编译器有些不同

{

RDTSC

mov hStart, edx

mov lStar织于迅倍析病t, eax

}

//此处放上耗时的代码

__asm

{

RDTSC

mov hEnd, edx

mov lEnd, eax

元资经北县区也围//获取两次计数器值得

sub eax, lStart

cmp eax, 0

j期烧置深燃答亚三殖g L1

neg eax

jmp L2

L1: m法型德百山何么背信教急ov lCnt, eax

L2术节练铁: sub edx, hStart

mov hCnt, edx

}

unsigned long timer = (hCnt < <32) + lCnt; //得出最终结果,timer就是所得的差值(单位ns)

阅读全文