speed benchmark

Dependencies:   mbed

Committer:
hsgw
Date:
Thu Jan 09 18:30:45 2014 +0000
Revision:
0:fb2a7afed608
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hsgw 0:fb2a7afed608 1 #include "mbed.h"
hsgw 0:fb2a7afed608 2
hsgw 0:fb2a7afed608 3 /*
hsgw 0:fb2a7afed608 4 Benchmark test script
hsgw 0:fb2a7afed608 5 */
hsgw 0:fb2a7afed608 6
hsgw 0:fb2a7afed608 7 ///////////////////////////////////////////////////
hsgw 0:fb2a7afed608 8 #define lOOPMACRO(label,symbol) t.reset();\
hsgw 0:fb2a7afed608 9 t.start();\
hsgw 0:fb2a7afed608 10 for(i=0;i<REPEAT;i++){\
hsgw 0:fb2a7afed608 11 (label##_z) = (label##_y) symbol (label##_x);\
hsgw 0:fb2a7afed608 12 }\
hsgw 0:fb2a7afed608 13 (label##_result) = t.read_us();\
hsgw 0:fb2a7afed608 14 t.stop();\
hsgw 0:fb2a7afed608 15 pc.printf( #label ": %d us ",(label##_result)-overhead);\
hsgw 0:fb2a7afed608 16 pc.printf("(%f us)\n",(float)((label##_result)-overhead) / (float)REPEAT);
hsgw 0:fb2a7afed608 17
hsgw 0:fb2a7afed608 18 ///////////////////////////////////////////////////
hsgw 0:fb2a7afed608 19
hsgw 0:fb2a7afed608 20 const uint32_t REPEAT = 1000000;
hsgw 0:fb2a7afed608 21
hsgw 0:fb2a7afed608 22 Serial pc(USBTX,USBRX);
hsgw 0:fb2a7afed608 23 Timer t;
hsgw 0:fb2a7afed608 24
hsgw 0:fb2a7afed608 25 volatile int8_t i8_x = 12;
hsgw 0:fb2a7afed608 26 volatile int8_t i8_y = 34;
hsgw 0:fb2a7afed608 27 volatile int8_t i8_z;
hsgw 0:fb2a7afed608 28
hsgw 0:fb2a7afed608 29 volatile int16_t i16_x = 12;
hsgw 0:fb2a7afed608 30 volatile int16_t i16_y = 34;
hsgw 0:fb2a7afed608 31 volatile int16_t i16_z;
hsgw 0:fb2a7afed608 32
hsgw 0:fb2a7afed608 33 volatile int32_t i32_x = 12345;
hsgw 0:fb2a7afed608 34 volatile int32_t i32_y = 67890;
hsgw 0:fb2a7afed608 35 volatile int32_t i32_z;
hsgw 0:fb2a7afed608 36
hsgw 0:fb2a7afed608 37 volatile int64_t i64_x = 123456;
hsgw 0:fb2a7afed608 38 volatile int64_t i64_y = 789011;
hsgw 0:fb2a7afed608 39 volatile int64_t i64_z;
hsgw 0:fb2a7afed608 40
hsgw 0:fb2a7afed608 41 volatile float f_x = 1.234567;
hsgw 0:fb2a7afed608 42 volatile float f_y = 2.345678;
hsgw 0:fb2a7afed608 43 volatile float f_z;
hsgw 0:fb2a7afed608 44
hsgw 0:fb2a7afed608 45 volatile double d_x = 1.23456789;
hsgw 0:fb2a7afed608 46 volatile double d_y = 2.34567890;
hsgw 0:fb2a7afed608 47 volatile double d_z;
hsgw 0:fb2a7afed608 48
hsgw 0:fb2a7afed608 49 int main() {
hsgw 0:fb2a7afed608 50 uint32_t i,overhead,i8_result,i16_result,i32_result,i64_result,f_result,d_result;
hsgw 0:fb2a7afed608 51 pc.printf("\n\nBenchMark TEST START\n\n // All calcurates repeat %d times\n\n",REPEAT);
hsgw 0:fb2a7afed608 52
hsgw 0:fb2a7afed608 53 // overhead
hsgw 0:fb2a7afed608 54 t.reset();
hsgw 0:fb2a7afed608 55 t.start();
hsgw 0:fb2a7afed608 56 for(i=0;i<REPEAT;i++){
hsgw 0:fb2a7afed608 57 }
hsgw 0:fb2a7afed608 58 overhead = t.read_us();
hsgw 0:fb2a7afed608 59 t.stop();
hsgw 0:fb2a7afed608 60 pc.printf("Overhead: %d us\n",overhead);
hsgw 0:fb2a7afed608 61
hsgw 0:fb2a7afed608 62 pc.printf("\nADD\n\n");
hsgw 0:fb2a7afed608 63
hsgw 0:fb2a7afed608 64 lOOPMACRO(i8,+);
hsgw 0:fb2a7afed608 65 lOOPMACRO(i16,+);
hsgw 0:fb2a7afed608 66 lOOPMACRO(i32,+);
hsgw 0:fb2a7afed608 67 lOOPMACRO(i64,+);
hsgw 0:fb2a7afed608 68 lOOPMACRO(f,+);
hsgw 0:fb2a7afed608 69 lOOPMACRO(d,+);
hsgw 0:fb2a7afed608 70
hsgw 0:fb2a7afed608 71 pc.printf("\nSUB\n\n");
hsgw 0:fb2a7afed608 72
hsgw 0:fb2a7afed608 73 lOOPMACRO(i8,-);
hsgw 0:fb2a7afed608 74 lOOPMACRO(i16,-);
hsgw 0:fb2a7afed608 75 lOOPMACRO(i32,-);
hsgw 0:fb2a7afed608 76 lOOPMACRO(i64,-);
hsgw 0:fb2a7afed608 77 lOOPMACRO(f,-);
hsgw 0:fb2a7afed608 78 lOOPMACRO(d,-);
hsgw 0:fb2a7afed608 79
hsgw 0:fb2a7afed608 80 pc.printf("\nMULTI\n\n");
hsgw 0:fb2a7afed608 81
hsgw 0:fb2a7afed608 82 lOOPMACRO(i8,*);
hsgw 0:fb2a7afed608 83 lOOPMACRO(i16,*);
hsgw 0:fb2a7afed608 84 lOOPMACRO(i32,*);
hsgw 0:fb2a7afed608 85 lOOPMACRO(i64,*);
hsgw 0:fb2a7afed608 86 lOOPMACRO(f,*);
hsgw 0:fb2a7afed608 87 lOOPMACRO(d,*);
hsgw 0:fb2a7afed608 88
hsgw 0:fb2a7afed608 89 pc.printf("\nDIV\n\n");
hsgw 0:fb2a7afed608 90
hsgw 0:fb2a7afed608 91 lOOPMACRO(i8,/);
hsgw 0:fb2a7afed608 92 lOOPMACRO(i16,/);
hsgw 0:fb2a7afed608 93 lOOPMACRO(i32,/);
hsgw 0:fb2a7afed608 94 lOOPMACRO(i64,/);
hsgw 0:fb2a7afed608 95 lOOPMACRO(f,/);
hsgw 0:fb2a7afed608 96 lOOPMACRO(d,/);
hsgw 0:fb2a7afed608 97
hsgw 0:fb2a7afed608 98 pc.printf("\nDONE\n");
hsgw 0:fb2a7afed608 99 }