Problem z pomiarem czasu time.h

0

Witam wszystkich forumowiczów,
mam problem z pomiarem czasu... Robię to w taki sposób:

#include <time.h>
#include <math.h>
#include <stdio.h>
#include <iostream>

time_t  beginTime, endTime;

int main(int argc, char *argv[])
{
beginTime=time(NULL);
//szereg instrukcji
endTime  = time(NULL);
printf("Czas koncowy=%f\n", endTime);
printf("Czas wykonywania=%f\n", difftime(endTime,beginTime));
}

Mimo to wyświetlając pojedynczo pobrany czas, bądź ich różnicę wynikiem jest zawsze:

Czas koncowy=0.000000
Czas wykonywania=0.000000

Czym może być to spowodowane?

0

ctime, cmath, cstdio. ;)
time_t przechowuje zwykle wartość kompatybilną z Unix timestamp - czyli w sekundach. Jeśli Twój mierzony kod nie wykonuje się przez przynajmniej sekundę, to różnica będzie zawsze 0. ;)
Spróbuj z clock() i clock_t:

#include <ctime>
#include <iostream>

int main() {
    std::clock_t begin = std::clock();
    // zapewne jakaś pętla, nie mierz pojedynczych instrukcji czy krótkich pętli, bo to nie ma za bardzo sensu
    std::cout << "Czas w sekundach: " << (std::clock() - begin) / static_cast<double>(CLOCKS_PER_SEC) << "s\n";
    return 0;
}

Pamiętaj, że precyzji co do milisekundy i tak nie dostaniesz, pomimo, że clock_t takie wartości przechowuje. Tzn jeżeli jakiś kod wykonuje się 1ms to i tak najpewniej nie dostaniesz takiego właśnie wyniku.

0

Bardzo dziękuje za szybką i trafną podpowiedź. Rozwiązałeś mój problem i rozwiałeś wszelkie wątpliwości.
Wynik zwracany jest w sekundach prawdab (wskazuje na to: static_cast<double>(CLOCKS_PER_SEC)) ?

Bardzo dziękuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1