计算cpu速度的小程序

原创 2003年06月30日 14:09:00
以下程序在vc60,console方式下编译运行通过。大家可以试一试,很准的说。
#include <stdio.h>
#include <windows.h>
float measure_clock_speed();
int main(void)
{
    printf("The cpu is running in %f MHz",measure_clock_speed());
    getchar();
    return 1;
}
float measure_clock_speed ()
//-------------------------------------
{
    unsigned long       ticks;
    unsigned long       cycles;
    unsigned long       stamp0,
stamp1;                                        
    unsigned long       freq = 0;
    unsigned long       freq2 =0;
    unsigned long       freq3 =0;
    unsigned long       total;
    unsigned long       tries=0;
    LARGE_INTEGER       t0,t1;                 
    LARGE_INTEGER       count_freq;
    if (!QueryPerformanceFrequency( &count_freq ) )
    {
        return 0.0f;
    }
    unsigned long priority_class     = GetPriorityClass(GetCurrentProcess());

    long          thread_priority    = GetThreadPriority(GetCurrentThread());

    SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
    do
    {
        tries++;
        freq3 = freq2;
        freq2 = freq;
        QueryPerformanceCounter(&t0);
        t1.LowPart = t0.LowPart;
        t1.HighPart = t0.HighPart;
        while ( (unsigned long)t1.LowPart - (unsigned long)t0.LowPart<50)
        {  
            QueryPerformanceCounter(&t1);
        }
       
        _asm
        {
            rdtsc
            mov stamp0, EAX
        }
        t0.LowPart = t1.LowPart;        // Reset Initial
        t0.HighPart = t1.HighPart;      //   Time
        while ((unsigned long)t1.LowPart-(unsigned long)t0.LowPart<1000 )
        {              
            QueryPerformanceCounter(&t1);
        }
        _asm
        {
            rdtsc
            mov     stamp1, EAX
        }
        cycles = stamp1 - stamp0;
        ticks = (unsigned long) t1.LowPart - (unsigned long) t0.LowPart;   

        ticks = ticks * 100000;            
        ticks = ticks / ( count_freq.LowPart/10 );     
        if ( ticks%count_freq.LowPart > count_freq.LowPart/2 )
        {              
            ticks++;            // Round up if necessary
        }
        freq = cycles/ticks;    // Cycles / us  = MHz
        if ( cycles%ticks > ticks/2 )
        {
            freq++;             // Round up if necessary
        }
        total = ( freq + freq2 + freq3 );
           
    } while (   (tries < 3 ) || (tries < 20) && ((abs(3 * freq -total) > 3)

||
        (abs(3 * freq2-total) > 3) || (abs(3 * freq3-total) > 3)));
       
    if ( total / 3  !=  ( total + 1 ) / 3 )
    {
        total ++;               // Round up if necessary
    }
    // restore the thread priority
    SetPriorityClass(GetCurrentProcess(), priority_class);
    SetThreadPriority(GetCurrentThread(), thread_priority);
    return float(total) / 3.0f;
}

计算cpu速度的小程序

以下程序在vc60,console方式下编译运行通过。大家可以试一试,很准的说。#include #include float measure_clock_speed();int main(void)...
  • hustli
  • hustli
  • 2003年06月30日 14:09
  • 1449

编程获得CPU的主频

CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。CPU的主频表示在CPU内数字脉冲信号震荡的速度。主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者...
  • jiangxinnju
  • jiangxinnju
  • 2014年05月09日 14:37
  • 1095

计算俩个时间之间的时间差(计算总计时间)

今天要计算一个时间的总用时长,想了一下写了一个方法,记录一下,在这里的时间的事是“yyyy-MM-dd HH:mm:ss”,最后计算的总时长是小时:分:秒; 首先我们将俩个事件转成Date形式,然后...
  • ITYDXTOCATTLE
  • ITYDXTOCATTLE
  • 2016年03月21日 10:09
  • 682

此小程序用于输入两个坐标,输出他们之间的距离

 /* * 此小程序用于输入两个坐标,输出他们之间的距离 * 2009年5月5日20:30:31 * author: Alpha */public class Point{ double x; dou...
  • JavaAlpha
  • JavaAlpha
  • 2009年05月05日 20:28
  • 1053

newlisp 获取cpu信息

紧跟前文,用newlisp写了一个获取本机cpu信息的小程序,每次都会调用REST API将数据发送给web server.#!/usr/bin/newlisp (load "config.lsp"...
  • sheismylife
  • sheismylife
  • 2013年09月14日 22:09
  • 2925

linux c编程 获取本机CPU利用率 内存使用情况 硬盘使用情况

linux c编程 获取本机CPU利用率 内存使用情况 硬盘使用情况
  • zyy617532750
  • zyy617532750
  • 2017年03月01日 21:14
  • 1220

java实现计算cpu使用率

通过/proc/stat文件信息,java实现计算cpu使用率 /proc/stat 文件内容: [root@Shentar ~]# cat /proc/stat cpu  602 0...
  • wwwxxdddx
  • wwwxxdddx
  • 2015年04月15日 15:08
  • 1260

js实现日期加减,求出时间差

在实际开发中,经常需要计算当前时间和服务端拿到的时间加减,最后计算出时间差,下面是我在开发中做的一个小例子: js计算函数: function DateSuntraction(dateSubtract...
  • ILV_XJ
  • ILV_XJ
  • 2017年06月27日 14:26
  • 735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算cpu速度的小程序
举报原因:
原因补充:

(最多只允许输入30个字)