Forum Discussion
Measure time in NIOS application
Hello,
I used the following code to measure 1usec in baremetal NIOS application.
PERF_RESET (NIOS_PERFORMANCE_COUNTER_BASE); PERF_START_MEASURING (NIOS_PERFORMANCE_COUNTER_BASE); PERF_BEGIN (NIOS_PERFORMANCE_COUNTER_BASE,MY_PERF_ID); usleep (1); PERF_END (NIOS_PERFORMANCE_COUNTER_BASE,MY_PERF_ID); time = perf_get_section_time (NIOS_PERFORMANCE_COUNTER_BASE, MY_PERF_ID);
But according to the clock value, the time is ~2usec, not ~1.
Can you please tell what is wrong in my code ?
Thank you in advance,
Zvika
5 Replies
- EricMunYew_C_Intel
Frequent Contributor
The return value is clock cycle, not usec.
2 means your measured result is 2 clock cycles.
- ZVere
New Contributor
Hello,
I'm aware the time is measured in clocks.
After converting clocks to usec, the measured time is ~2usec.
But the delay is exactly 1usec ( usleep(1) )
Is there an alternative for measuring the clock cycles ?
Thank you,
Zvika
- EricMunYew_C_Intel
Frequent Contributor
Your code is measuring the number of clock cycles to finish execute usleep(1), not measuring the delay.
- ZVere
New Contributor
Hello,
Thank you for your reply.
How can I measure exactly the time a specified code is running ? (in clocks)
For example: If the code is usleep (1), I expect that NofClocks * Frequency ~ 1usec
Best regards,
Zvika
- EricMunYew_C_Intel
Frequent Contributor
You may refer to Nios profiling below.
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an391.pdf