Вычисление прошедшего времени в программе C в миллисекундах

В случае, если Вы разрабатываете программное обеспечение: используйте средство запуска Java. Я использовал для нескольких из моего приложения [Exe4j] [ http://www.ej-technologies.com/products/exe4j/overview.html] , и оно работало очень хорошо. Когда приложение запущено, оно перечислено что касается примера "myserverapp.exe" или "myapp" в менеджере по задачам окон. Существуют другие lauchers также (не делайте известный их наизусть), немногие из них могли бы быть бесплатно также.

23
задан michaelb958--Reinstate Monica 17 March 2014 в 00:15
поделиться

5 ответов

Другой вариант (по крайней мере, в некоторых UNIX) - это clock_gettime и связанные с ним функции. Это позволяет получить доступ к различным часам реального времени, и вы можете выбрать один из вариантов с более высоким разрешением и отказаться от разрешения, которое вам не нужно.

5
ответ дан 29 November 2019 в 01:55
поделиться

Лучший способ ответить - это привести пример:

#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

/* Return 1 if the difference is negative, otherwise 0.  */
int timeval_subtract(struct timeval *result, struct timeval *t2, struct timeval *t1)
{
    long int diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
    result->tv_sec = diff / 1000000;
    result->tv_usec = diff % 1000000;

    return (diff<0);
}

void timeval_print(struct timeval *tv)
{
    char buffer[30];
    time_t curtime;

    printf("%ld.%06ld", tv->tv_sec, tv->tv_usec);
    curtime = tv->tv_sec;
    strftime(buffer, 30, "%m-%d-%Y  %T", localtime(&curtime));
    printf(" = %s.%06ld\n", buffer, tv->tv_usec);
}

int main()
{
    struct timeval tvBegin, tvEnd, tvDiff;

    // begin
    gettimeofday(&tvBegin, NULL);
    timeval_print(&tvBegin);

    // lengthy operation
    int i,j;
    for(i=0;i<999999L;++i) {
        j=sqrt(i);
    }

    //end
    gettimeofday(&tvEnd, NULL);
    timeval_print(&tvEnd);

    // diff
    timeval_subtract(&tvDiff, &tvEnd, &tvBegin);
    printf("%ld.%06ld\n", tvDiff.tv_sec, tvDiff.tv_usec);

    return 0;
}
33
ответ дан 29 November 2019 в 01:55
поделиться

Функция gettimeofday возвращает время с точностью до микросекунд (если, конечно, платформа поддерживает это):

gettimeofday ( ) функция должна получить текущее время, выраженное как секунды и микросекунды с момента Эпоха и сохраните ее во времени структура, на которую указывает tp. В разрешение системных часов не указано.

3
ответ дан 29 November 2019 в 01:55
поделиться

В библиотеках C есть функция, позволяющая узнать системное время. Вы можете рассчитать прошедшее время после того, как зафиксируете время начала и окончания.

Функция называется gettimeofday (), и вы можете посмотреть справочную страницу, чтобы узнать, что включить и как ее использовать.

2
ответ дан 29 November 2019 в 01:55
поделиться

В Windows вы можете просто сделать это:

DWORD dwTickCount = GetTickCount();

// Perform some things.

printf("Code took: %dms\n", GetTickCount() - dwTickCount);

Не самое общее / элегантное решение, но красивое и быстрое, когда оно вам нужно.

0
ответ дан 29 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: