Takuya Urakawa
/
calcSpeedBenchMark
speed benchmark
main.cpp@0:fb2a7afed608, 2014-01-09 (annotated)
- Committer:
- hsgw
- Date:
- Thu Jan 09 18:30:45 2014 +0000
- Revision:
- 0:fb2a7afed608
initial
Who changed what in which revision?
User | Revision | Line number | New 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 | } |