C++获取CPU频率(转)

LONGLONG GetFrequency(DWORD sleepTime)    //获取CPU主频
{

    DWORD low1 = 0, high1 = 0, low2 = 0, high2 = 0;

    LARGE_INTEGER fq, st, ed;

    /*在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在

    需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的技术

    之差和时钟的频率,就可以计算出时间经历的精确时间。*/

    ::QueryPerformanceFrequency(&fq);    //精确计时(返回硬件支持的高精度计数器的频率)

    ::QueryPerformanceCounter(&st);    //获得起始时间

    __asm {    //获得当前CPU的时间数

        rdtsc

        mov low1, eax

        mov high1, edx

    }

    ::Sleep(sleepTime);    //将线程挂起片刻

    ::QueryPerformanceCounter(&ed);    //获得结束时间

    __asm {

        rdtsc    //读取CPU的时间戳计数器

        mov low2, eax

        mov high2, edx

    }
    //将CPU得时间周期数转化成64位整数

    LONGLONG begin = (LONGLONG)high1 << 32 | low1;

    LONGLONG end = (LONGLONG)high2 << 32 | low2;

    //将两次获得的CPU时间周期数除以间隔时间,即得到CPU的频率

    //由于windows的Sleep函数有大约15毫秒的误差,故以windows的精确计时为准

    return (end - begin)*fq.QuadPart / (ed.QuadPart - st.QuadPart);

}

转自:http://blog.csdn.net/kofandlizi/article/details/6253801

时间: 2024-10-07 14:35:25

C++获取CPU频率(转)的相关文章

获取CPU频率

#include <stdio.h> #include <string.h> float get_cpu_clock_speed() { FILE *fp; char buffer[1024]; size_t bytes_read; char *match; float clock_speed; fp=fopen("/proc/cpuinfo","r"); bytes_read=fread(buffer,1,sizeof(buffer),fp

CPU频率越高手机速度越快?

很多人认为CPU的主频越高,手机的运行速度就越快.实际上,这正是受到了手机厂商宣传的误导.群<Android开发入门 372858684>的专家告诉我们CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力并没有直接关系,主频的高低对于CPU的运算能力并没有直接的影响.对于一台智能手机来说,影响它响应速度快慢的包含了多种因素,除了CPU之外,缓存与架构对于手机的响应速度也至关重要.所谓"缓存",就像是你手边书桌的抽屉,日常使用的书本文具,你都会放在抽屉里,

Atitit. 获取cpu占有率的 java c# .net php node.js的实现

通过wmic接口获取cpu占有率 C:\Users\Administrator.ATTILAXPC188>wmic cpu get LoadPercentage LoadPercentage 71 注意:平均cpu占用率的计算 我们获取的都是瞬间的cpu占用,需要一段时间内的平均cpu才比较好 /atiplat_cms/src/com/attilax/device/Calcor.java 其次,获取的cpu,是总cpu,如果需要精确制导每个核心的占用,也可以使用这个命令的详细版本. 此外,这个w

Android中获取CPU负载和进程cpu时间

android系统中有一个ProcessStats类,我们可以使用它来获取系统的负载情况及进程时间. 实现原理是读取/proc目录下的.linux系统运行时,内核会去更新 /proc目录下的文件,将PID的运行情况写入相应的文件中.我们主要关注以下文件 1. /proc/stat 该文件包含了从系统启动开始累积到当前时刻的CPU活动信息. 看下我手机的情况,如下 cat /proc/stat cpu  14869 5121 19794 156065 3114 0 26 0 0 0 cpu0 10

linux获取CPU温度

Centos系列 1 yum install lm_sensors 2 sensors-detect 3 sensors Ubuntu系列(多了service module-init-tools start一步骤) 1 apt-get install lm-sensors 2 sensors-detect 3 service module-init-tools start 4 sensors 也可以通过sys系统读取cpu的温度: /sys/class/hwmon/hwmon0/device/

获取CPU信息

1 查看手机CPU信息 cmd——adb shell——cd /proc------cat cpuinfo 2 获取cpu的是arm指令集,armv7指令集.还是neon指令集 /** * * [获取cpu类型和架构] * * @return * 三个参数类型的数组,第一个参数标识是不是ARM架构,第二个参数标识是V6还是V7架构,第三个参数标识是不是neon指令集 */ public static Object[] getCpuArchitecture() { if ((Integer) mA

linux调整cpu频率

cd   /sys/devices/system/cpu/cpu0/cpufreq  cat scaling_available_governors hotplug conservative ondemand userspace powersave interactive performance 为了可以对几种常见的CPU频率调节模式有个基本的理解下面简单的总结了一下根据不同方式的特点自己来在性能与省电这两对矛盾之间做个取舍找出适合自己的平衡点吧 1.ondemand系统默认的超频模式按需调节内

Qt 获取CPU信息

在Qt中调用Windows API GetSystemInfo可以获取CPU的相关信息,使用Qt的界面控件显示在界面上.在实现的过程中遇到了一个问题,就是显示地址信息在界面控件上. 试了好几种方法,都不能显示,最后想到了格式化函数sprintf,将地址转为char类型的数组或者指针,再转为字符串就可以正常显示了. 如果有人有更好的方法来显示地址,欢迎交流. 完整代码: #pragma execution_character_set("utf-8") #ifndef QCPUINFO_H

Linux下java获取CPU、内存、磁盘IO、网络带宽使用率

一.CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数." 从/proc文件系统获取cpu使用情况:    cat /proc/stat 在Linux的内核中,有一个全 局变量:Jiffies. Jiffies代表时间.它的单位随硬件平台的不同而不同.系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目.这样ji