Bernd,

Thank you for giving me an example.

I tried it with 1sec( 1000000us) sleep, then I got 1010.

I think 1010 represent elapsed time in milliseconds and this is the same accuracy as I tried before.

After changing CONFIG_USEC_PER_TICK from 10000(default) to 1000, I got 1001 which is better accuracy.


Thank you very much.

Yuta Ide

On 2021/04/30 3:06, Bernd Walter wrote:
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 <yutr...@gmail.com> 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

Reply via email to