Pandoro
Pandoro

Reputation: 1062

How to get the current time in native Android code?

I was wondering if there is an easy way to get the current time in native Android code. Optimally it would be something comparable to System.getTimeMillies(). I will only be using it to see how long certain function calls will take so a long variable with the current time in milliseconds would be the optimal solution for me.

Thanks in advance!

Upvotes: 27

Views: 29060

Answers (4)

dadin852
dadin852

Reputation: 1

#include <time.h>

time_t currentTime;
time(&currentTime);
auto readableDate = ctime(&currentTime);

Upvotes: 0

fadden
fadden

Reputation: 52343

For microsecond resolution you can use gettimeofday(). This uses "wall clock time", which continues to advance when the device is asleep, but is subject to sudden shifts forward or backward if the network updates the device's clock.

You can also use clock_gettime(CLOCK_MONOTONIC). This uses the monotonic clock, which never leaps forward or backward, but stops counting when the device sleeps.

The actual resolution of the timers is device-dependent.

Both of these are POSIX APIs, not Android-specific.

Upvotes: 19

donturner
donturner

Reputation: 19156

Another one for the lazy, this function returns the current time in nanoseconds using CLOCK_MONOTONIC

#include <time.h>
#define NANOS_IN_SECOND 1000000000

static long currentTimeInNanos() {

    struct timespec res;
    clock_gettime(CLOCK_MONOTONIC, &res);
    return (res.tv_sec * NANOS_IN_SECOND) + res.tv_nsec;
}

Upvotes: 5

torger
torger

Reputation: 2328

For the lazy, add this to the top of your code:

#include <time.h>

// from android samples
/* return current time in milliseconds */
static double now_ms(void) {

    struct timespec res;
    clock_gettime(CLOCK_REALTIME, &res);
    return 1000.0 * res.tv_sec + (double) res.tv_nsec / 1e6;

}

Call it like this:

double start = now_ms(); // start time

// YOUR CODE HERE

double end = now_ms(); // finish time

double delta = end - start; // time your code took to exec in ms

Upvotes: 39

Related Questions