Есть ли способ определить время, затраченное на включение Windows? - PullRequest
4 голосов
/ 06 ноября 2010

Я бы хотел сказать, сколько времени требуется, чтобы перейти от включения питания к запуску Windows. Есть ли способ определить это ретроспективно (то есть после запуска Windows)? BIOS / CMOS держит время последней загрузки? Можно ли из RDTSC определить, как долго работает машина, и вычесть время загрузки Windows?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2010

Получите время с момента включения от 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));
}
0 голосов
/ 06 ноября 2010

Вы можете попробовать BootTimer или BootRacer , чтобы увидеть, что любой из них сделает то, что вы хотите.

Не думаю, что вы сможете определить это после запуска Windows. Я не знаю ни одного BIOS, который хранит время последней загрузки. Но на любой современной машине, если время между включением и вызовом загрузчика ОС (по сути, время, необходимое для запуска подпрограмм POST ) занимает больше нескольких секунд, что-то не так.

Вы пытаетесь сделать это программно, чтобы получить точное количество времени, в течение которого аппарат находился в сети и работал? Неточность, возникающая из-за нескольких секунд, которые занимает POST, не кажется существенной. Если вы выбираете время для тестирования или оптимизации, любая из этих двух утилит должна работать на вас.

...