zoukankan      html  css  js  c++  java
  • Windows下获取CPU频率

    一直想在Windows下取得CPU的时钟速度,找了好久终于找到了函数CallNtPowerInformation,要想使用它,首先必须包含powrprof.h头文件和链接库powerprof.lib.但是还有几个问题:

            首先powrprof.h和许多其它在Platform SDK中的头文件一样依然没有被C++验证,如果你在C++程序中包含它的时候如果不小心,依然会有链接错误。最好这样包含它:

    extern "C" {
    #include <powrprof.h>
    }
    第二个原因是有一个结构不知道什么原因没有包含在powrprof.h中,这个结构是PROCESSOR_POWER_INFORMATION.在Visual C++ 2008 Express Edition中仍然存在这个问题。为了取得正确的处理器速度,我们需要调用CallNtPowerInformation。ProcessorInformation枚举值是第一个参数,PROCESSOR_POWER_INFORMATION 结构的一个数组作为Output缓存(对应于每一个安装在系统中的处理器芯片)。

    一种解决的办法是:这个结构因为在MSDN中有定义,所以我们可以在我们自己的文件里定义它:

    typedef struct _PROCESSOR_POWER_INFORMATION {
      ULONG  Number;
      ULONG  MaxMhz;
      ULONG  CurrentMhz;
      ULONG  MhzLimit;
      ULONG  MaxIdleState;
      ULONG  CurrentIdleState;
    } PROCESSOR_POWER_INFORMATION , *PPROCESSOR_POWER_INFORMATION;
    

     

    从PROCESSOR_POWER_INFORMATION这个结构的定义中你可以发现,这个结构提供CPU速度的信息,例如最大速度,当前速度,和空闲状态(尽管我承认我不知道空闲状态位--我会去解决的)有一个相关的API函数GetPwuCapabilities,它也可以取得系统的一些性能。

  • 相关阅读:
    利用 innodb_force_recovery 解决MySQL服务器crash无法重启问题
    MySQL-5.7复制功能的默认设置改进
    MySQL explain
    MySQL服务器参数
    MySQL参数调优
    Oracle RAC(Real Application Clusters)
    MySQL show processlist 执行状态分析
    MongoDB 高可用集群架构简介
    docker网络
    centos 7.3镜像制作
  • 原文地址:https://www.cnblogs.com/huty/p/8518858.html
Copyright © 2011-2022 走看看