mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-08-01 20:29:00 +00:00
benchmarks/fpu: improve timing precision to milliseconds
Change FPU benchmark timing from seconds to milliseconds for better accuracy. This allows for more precise measurement of test cycles, especially for shorter test runs that previously completed within a single second. Signed-off-by: makejian <makejian@xiaomi.com>
This commit is contained in:
parent
9148fb9718
commit
22f85e8b61
1 changed files with 11 additions and 8 deletions
|
|
@ -143,10 +143,11 @@ int main(int argc, FAR char *argv[])
|
||||||
/* added for this version */
|
/* added for this version */
|
||||||
|
|
||||||
long loopstart;
|
long loopstart;
|
||||||
long startsec;
|
long startmsec;
|
||||||
long finisec;
|
long finimsec;
|
||||||
float KIPS;
|
float KIPS;
|
||||||
int continuous;
|
int continuous;
|
||||||
|
struct timespec ts;
|
||||||
|
|
||||||
loopstart = 1000; /* see the note about loop below */
|
loopstart = 1000; /* see the note about loop below */
|
||||||
continuous = 0;
|
continuous = 0;
|
||||||
|
|
@ -175,7 +176,8 @@ LCONT:
|
||||||
|
|
||||||
/* Start benchmark timing at this point. */
|
/* Start benchmark timing at this point. */
|
||||||
|
|
||||||
startsec = time(0);
|
clock_gettime(CLOCK_REALTIME, &ts);
|
||||||
|
startmsec = ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
|
||||||
|
|
||||||
/* The actual benchmark starts here. */
|
/* The actual benchmark starts here. */
|
||||||
|
|
||||||
|
|
@ -431,7 +433,8 @@ IILOOP:
|
||||||
|
|
||||||
/* Stop benchmark timing at this point. */
|
/* Stop benchmark timing at this point. */
|
||||||
|
|
||||||
finisec = time(0);
|
clock_gettime(CLOCK_REALTIME, &ts);
|
||||||
|
finimsec = ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
|
||||||
|
|
||||||
/* Performance in Whetstone KIP's per second is given by
|
/* Performance in Whetstone KIP's per second is given by
|
||||||
*
|
*
|
||||||
|
|
@ -441,16 +444,16 @@ IILOOP:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
if (finisec - startsec <= 0)
|
if (finimsec - startmsec <= 0)
|
||||||
{
|
{
|
||||||
printf("Insufficient duration- Increase the loop count\n");
|
printf("Insufficient duration- Increase the loop count\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Loops: %ld, Iterations: %d, Duration: %ld sec.\n",
|
printf("Loops: %ld, Iterations: %d, Duration: %ld millisecond.\n",
|
||||||
loop, ii, finisec - startsec);
|
loop, ii, finimsec - startmsec);
|
||||||
|
|
||||||
KIPS = (100.0 * loop * ii) / (float)(finisec - startsec);
|
KIPS = (100.0 * loop * ii) / ((float)(finimsec - startmsec) * 1000);
|
||||||
if (KIPS >= 1000.0)
|
if (KIPS >= 1000.0)
|
||||||
{
|
{
|
||||||
printf("C Converted Double Precision Whetstones: %.1f MIPS\n",
|
printf("C Converted Double Precision Whetstones: %.1f MIPS\n",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue