I usually do the following to measure time differences:
struct timespec tp;
uint64_t starttime;
clock_gettime(CLOCK_MONOTONIC, &tp);
starttime = ((uint64_t)(tp.tv_sec) * 1000000) + tp.tv_nsec / 1000;
//do something
clock_gettime(CLOCK_MONOTONIC, &tp);
uint64_t timeconsumed = (((uint64_t)(tp.tv_sec) * 1000000) + tp.tv_nsec
/ 1000 - starttime) / 1000;
This requires CONFIG_CLOCK_MONOTONIC to be configured.
This is immune to (wall)clock updates.
Result is in usec, but not necessarily in usec granularity.
On Fri, Apr 30, 2021 at 02:07:15AM +0900, yuta wrote:
> Brennan,
> Thank you for your advice.
>
> I checked links you shared and
> https://www.gnu.org/software/libc/manual/html_node/CPU-Time.html
> I got elapsed time. Thank you.
>
> However I'm wondering why the elapsed time I got was not exactly the same I
> expected to get.
> I tried below.
>
> // ***** start
> clock_t start, end;
> double cpu_time_used;
>
> start = clock();
> usleep(1000000); // 1sec
> end = clock();
>
> cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
>
> printf("CPU time used: %f sec\n", cpu_time_used);
> // ***** end
>
> What I got is ...
> "CPU time used: 1.010000 sec" (I expected to get 1.000000 sec)
>
> Do you have any idea?
>
> Yuta Ide
>
> On 2021/04/30 0:30, Brennan Ashton wrote:
> > On Thu, Apr 29, 2021, 8:16 AM yuta <[email protected]> wrote:
> >
> >> Hi all.
> >>
> >> I'm new to NuttX.
> >>
> >> I'm not sure if it's no problem me asking some personal question about
> >> NuttX here. (please tell me if better place to ask.)
> >>
> >> by the way, I have made my app in apps/examples/<my app>. It's working
> >> well. Now, I would like to measure elapsed time during processing a
> >> program by put codes like below.
> >>
> > NuttX supports the POSIX time interfaces so you are looking for something
> > like this.
> >
> > https://www.gnu.org/software/libc/manual/html_node/Calculating-Elapsed-Time.html
> >
> >
> > There is also CPU time measurements, but NuttX does not treat this exactly
> > correct as it is expected to give the amount of clock ticks the CPU has
> > spent on a process. Instead with NuttX you get ticks since boot.
> >
> > https://www.gnu.org/software/libc/manual/html_node/Processor-And-CPU-Time.html
> >
> > --Brennan
> >
--
B.Walter <[email protected]> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.