Forum Discussion

ZVere's avatar
ZVere
Icon for New Contributor rankNew Contributor
4 years ago

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's avatar
    EricMunYew_C_Intel
    Icon for Frequent Contributor rankFrequent Contributor

    The return value is clock cycle, not usec.

    2 means your measured result is 2 clock cycles.


  • ZVere's avatar
    ZVere
    Icon for New Contributor rankNew 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's avatar
    EricMunYew_C_Intel
    Icon for Frequent Contributor rankFrequent Contributor

    Your code is measuring the number of clock cycles to finish execute usleep(1), not measuring the delay.


    • ZVere's avatar
      ZVere
      Icon for New Contributor rankNew 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