Reputation: 696
Is it possible to get the actual millis since I-don't-know in a C++-programm like System.currentTimeMillis()
in Java? I know time()
, but I think it's not exactly enough to measure short times, is it?
Upvotes: 5
Views: 15132
Reputation: 392833
It's part of the language standard these days (some years now):
See it Live On Coliru
#include <chrono>
#include <iostream>
int main()
{
using namespace std::chrono;
auto epoch = high_resolution_clock::from_time_t(0);
// ...
auto now = high_resolution_clock::now();
auto mseconds = duration_cast<milliseconds>(now - epoch).count();
std::cout << "millis: " << mseconds;
}
Upvotes: 3
Reputation: 53173
If you have C++11 support available, you may want to look into std::chrono
.
#include <iostream>
#include <chrono>
#include <ctime>
long fibonacci(int n)
{
if (n < 3) return 1;
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
std::cout << "f(42) = " << fibonacci(42) << '\n';
end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
}
Failing that, you could use the C style std::time as follows:
#include <ctime>
#include <iostream>
int main()
{
std::time_t result = std::time(NULL);
std::cout << std::asctime(std::localtime(&result))
<< result << " seconds since the Epoch\n";
}
Upvotes: 1
Reputation: 114461
In C++ you also have clock()
#include <time.h>
...
clock_t start = clock();
... some processing ...
clock_t stop = clock();
double elapsed = double(stop - start) / CLOCKS_PER_SEC;
There are also other more accurate ways of measure timings, but they are more dependent on which king of system you're running your programs on.
Upvotes: 3