Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法获取设备中的处理器速度_C++_Windows_Windows Ce_Winapi - Fatal编程技术网

C++ 无法获取设备中的处理器速度

C++ 无法获取设备中的处理器速度,c++,windows,windows-ce,winapi,C++,Windows,Windows Ce,Winapi,您好,我正在使用QueryperformanceFrequency获取循环数,即处理器速度。 但它向我显示了错误的值。这是写在规格是处理器约400MHz,但我们通过代码是16MHz的东西 请提供任何指针: 绞车设备的代码为: LARGE_INTEGER FrequnecyCounter; QueryPerformanceFrequency(&FrequnecyCounter); CString temp; temp.Format(L"%lld",FrequnecyCounter.Q

您好,我正在使用QueryperformanceFrequency获取循环数,即处理器速度。 但它向我显示了错误的值。这是写在规格是处理器约400MHz,但我们通过代码是16MHz的东西

请提供任何指针:

绞车设备的代码为:

LARGE_INTEGER FrequnecyCounter;

QueryPerformanceFrequency(&FrequnecyCounter);

CString temp;

temp.Format(L"%lld",FrequnecyCounter.QuadPart)`AfxMessageBox(temp);
谢谢


Mukesh

QueryPerformanceFrequency返回计数器外围设备的频率,而不是处理器的频率。这些外围设备通常以原始晶体时钟频率运行。16Mhz的分辨率应足以测量细粒度间隔。

QPF不会返回CPU时钟速度。它返回高性能计时器的频率。在一些系统上,它可能实际测量CPU周期。在其他系统上,它可能使用以相同频率运行的独立计时器。(但它不受SpeedStep等因素的影响,SpeedStep会改变CPU的时钟速度)。通常,它完全使用一个单独的计时器,这个计时器甚至可能不在CPU上,但可能是主板的一部分


QueryPerformanceCounter/QueryPerformanceFrequency仅承诺使用系统上可用的最佳计时器。他们没有承诺计时器可能是什么。

但如果我在桌面上应用相同的东西,它会给我精确的滴答数,比如2.9 GHZ,与处理器速度相同,那么为什么不使用wince设备…??@mukesh:它可以与CPU时钟速度相同,也可以是其他值-性能计数器时钟不要求与CPU时钟相同。如果您想要CPU时钟速度,请使用适当的API来获得它。@mukesh,正如PauL R所说,这可以与CPU时钟速度相同。查看您引用的数字,我觉得您正在使用一些嵌入式SOC查看文档,以找出用于实现此API的计数器。在这样的系统中,每当CPU空闲超过某个阈值以节省电源时,高频CPU时钟就会被切断,因此,使用一个始终可用的时钟来实现性能计数器是有意义的。如果您使用任何智能手机平台,那么您经常会看到32KHZ的值被报告为性能计数器频率。