add benchmark
This commit is contained in:
41
benchmark.c
Normal file
41
benchmark.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include "lib.c"
|
||||
|
||||
#ifndef BENCHMARK_ROUNDS
|
||||
#define BENCHMARK_ROUNDS 1
|
||||
#endif
|
||||
|
||||
uint32_t crc32_update(char *p, uint16_t len)
|
||||
{
|
||||
uint16_t i;
|
||||
uint32_t crc = 0;
|
||||
while (len--) {
|
||||
crc ^= *p++;
|
||||
for (i = 0; i < 8; i++)
|
||||
crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0);
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
|
||||
uint32_t array[8];
|
||||
|
||||
|
||||
MAIN() {
|
||||
MARKER(start_trace);
|
||||
uint32_t crc = 0;
|
||||
uint32_t a = 0, b = 1;
|
||||
|
||||
for (uint16_t i = 0; i < BENCHMARK_ROUNDS; i++) {
|
||||
// Calculate the nth. Fibonacci Number
|
||||
for (uint8_t x = 0; x < sizeof(array)/sizeof(*array); x++) {
|
||||
array[x] = a;
|
||||
a = a + b;
|
||||
b = array[x];
|
||||
}
|
||||
|
||||
crc ^= crc32_update((char *)array, sizeof(array));
|
||||
}
|
||||
MARKER(stop_trace);
|
||||
|
||||
POSIX_PRINTF("SUM: %x\n", crc);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user