您现在的位置是:首页 >

cpu详细参数 cpu时间详细资料大全

火烧 2021-07-03 00:05:00 1052
c u时间详细资料大全 CPU时间即反映CPU全速工作时完成该进程所花费的时间●c u时间计算CPU TIME = # of CPU Clock Cycle x Clock Period= # of

cpu时间详细资料大全  

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

cpu详细参数 cpu时间详细资料大全

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

= (# of CPU Clock Cycles)/(Clock Frequency)

基本介绍

中文名:cpu时间性质:科学类别:计算机属于:编程 简介,计算方法,

简介

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

计算方法

一、计算算法的CPU运行时间 (一)一般有这么几个函式可以使用: <time.h> 中的std的clock() 可以精确到1ms <windows.h> 中的win下常用的GetTickCount可以精确到18-20ms 当然这些都不是C或是C++标准支持的。 (二)我们先来看看clock()的用法: #include <time.h> #include <stdio.h> int main() { time_t t; 一定要这个类型 long i; t = clock(); for (i = 0; i < 1024 * 32768; ++i) ; 做些耗时的事情,可能就是你的算法 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;差值的高位和低位 __asm 内嵌汇编的语法可能不同编译器有些不同 { RDTSC mov hStart, edx mov lStart, eax } 此处放上耗时的代码 __asm { RDTSC mov hEnd, edx mov lEnd, eax 获取两次计数器值得差 sub eax, lStart cmp eax, 0 jg L1 neg eax jmp L2 L1: mov lCnt, eax L2: sub edx, hStart mov hCnt, edx } unsigned long timer = (hCnt < <32) + lCnt; 得出最终结果,timer就是所得的差值(单位ns)  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码