How can I measure time from adb shell with milliseconds or nanoseconds resolution?
Usingdate +%.%N
from adb shell returns 1401546811.N
(seconds resolution) instead of something like 1401547289.231869798
(nanoseconds resolution).
How can I get either milliseconds or nanoseconds resolution from adb shell?
Is there some terminal program that I can use to give me this?
I am able to measure time using System.currentTimeMillis()
and System.nanoTime()
from Android application code itself, but I also need something from within adb shell
.
mksh
(the standard Android shell since version 4.0) has a built-in EPOCHREALTIME
environment variable:
Time since the epoch, as returned by gettimeofday(2)
, formatted as decimal tv_sec followed by a dot .
and tv_usec padded to exactly six decimal digits.
So the command to get epoch
time with microsecond accuracy in Windows would be:
adb shell echo $EPOCHREALTIME
or in Linux:
adb shell 'echo $EPOCHREALTIME'
If you just need millisecond accuracy:
adb shell 'echo ${EPOCHREALTIME:0:14}'
Or just the milliseconds part to use with another time format:
adb shell 'echo $(date +%T)${EPOCHREALTIME:10:4}'
Kind of solved my problem by using botbrew. Probably not idea, but at least it works for now.
/data/botbrew-basil/init -- date +%s.%N
-- returns nanosecond resolution.
adb shell echo $EPOCHREALTIME
gives you the time with micro seconds,
(don't write it with '\' before the variable name)