Для простых программ на C cmd: как добавить «программу, выполненную за 12,345 секунд»? - PullRequest
1 голос
/ 17 апреля 2010

Я пользователь Windows, и я изучаю C. Я использую Codeblocks и Visual C ++ 2008 Express дома, чтобы писать простые программы командной строки C (я новичок), и я считаю действительно полезным, когда codeblocks добавляет несколько строк в конце со временем, которое требуется (пример: «Процесс вернул 0 (0x0) время выполнения: 6,848 с»).

Я хочу добавить эту функцию в .exe, чтобы я мог «тестировать» или «тестировать» программу на нескольких компьютерах. Я пытался использовать время (NULL), но оно работает только с точностью до 1 секунды.

Я также нашел здесь очень интересные ответы (на самом деле я ищу то же самое): Расчет времени по коду C ++

Решение, предложенное Марком Уилкинсом, прекрасно работает на Visual C ++ 2008 Express на моем 64-битном компьютере с Windows, но .exe не работает нигде. Я что-то не так делаю?

Я бы хотел, чтобы метод подсчитывал истекшее время ожидания для моих программ, который должен иметь 32-битную совместимость. Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 17 апреля 2010

В заголовке time.h есть функция clock_t clock ();

Возвращает количество аппаратных таймеров, истекших с момента запуска программы. Для получения реального времени вы можете разделить это число на константу CLOCKS_PER_SEC, которая также определяется во времени

Полный метод будет:

void print_time_since_launch() {
    printf ("Execution time %f", clock() / CLOCKS_PER_SEC);
}

Вы можете использовать его в своей программе следующим образом:

static clock_t s_start_time;
void start_clock() { s_start_time = clock(); }
void display_execution_time() { 
    clock_t now = clock();
    double secs = (now - s_start_time) / (double)CLOCKS_PER_SEC;
    printf("Execution time: %g secs\n", secs);
}
int main() {
    start_clock();
    /* do your thing */
    display_execution_time();
}
0 голосов
/ 18 апреля 2010
#include <mmsystem.h>

int
main() {
    DWORD start = timeGetTime();
    //Do work
    DWORD end = timeGetTime(); 
    printf("execution time: %.3f s\n", float(end - start) / 1000.0f);
}
0 голосов
/ 17 апреля 2010

Причина, по которой он не работает на некоторых ПК ... Смотрите мой ответ на

Насколько точны внутренние часы современного ПК?

...