4

我希望能够说出从开机到启动 Windows 需要多长时间。有没有办法追溯确定(即一旦窗口启动)?BIOS/CMOS 是否保持上次启动时间?是否可以从 RDTSC 中得知机器运行了多长时间并减去 Windows 启动时间?

4

2 回答 2

0

从 GetTickCount() 获取开机后的时间。然后获取 Windows 在启动时接触的文件的时间戳(例如 windows\bootstat.dat)。代码如下。在我的机器上它说 16 秒,这听起来很准确。

#include <stdio.h>
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>

int main()
{
    struct __stat64 st;
    _stat64("c:\\windows\\bootstat.dat", &st);

    return printf("%d\n", st.st_mtime - (time(NULL) - GetTickCount()/1000));
}
于 2010-11-06T21:42:43.623 回答
0

您可以尝试使用BootTimerBootRacer来查看它们中的任何一个都可以满足您的需求。

我不相信您可以在 Windows 启动后确定这一点。我不知道任何存储上次启动时间的 BIOS。但是在任何现代机器上,如果从开机到调用 OS 引导加载程序(本质上是运行POST例程所需的时间)之间的时间超过几秒钟,那么就有问题了。

您是否尝试以编程方式执行此操作以获得机器在线和可用的准确时间?POST 花费的几秒钟所导致的不准确性似乎不会产生重大影响。如果您正在为基准测试或优化目的计时,那么这两个实用程序中的任何一个都应该适合您。

于 2010-11-06T07:51:15.037 回答