Takuya Urakawa
/
calcSpeedBenchMark
speed benchmark
main.cpp
- Committer:
- hsgw
- Date:
- 2014-01-09
- Revision:
- 0:fb2a7afed608
File content as of revision 0:fb2a7afed608:
#include "mbed.h" /* Benchmark test script */ /////////////////////////////////////////////////// #define lOOPMACRO(label,symbol) t.reset();\ t.start();\ for(i=0;i<REPEAT;i++){\ (label##_z) = (label##_y) symbol (label##_x);\ }\ (label##_result) = t.read_us();\ t.stop();\ pc.printf( #label ": %d us ",(label##_result)-overhead);\ pc.printf("(%f us)\n",(float)((label##_result)-overhead) / (float)REPEAT); /////////////////////////////////////////////////// const uint32_t REPEAT = 1000000; Serial pc(USBTX,USBRX); Timer t; volatile int8_t i8_x = 12; volatile int8_t i8_y = 34; volatile int8_t i8_z; volatile int16_t i16_x = 12; volatile int16_t i16_y = 34; volatile int16_t i16_z; volatile int32_t i32_x = 12345; volatile int32_t i32_y = 67890; volatile int32_t i32_z; volatile int64_t i64_x = 123456; volatile int64_t i64_y = 789011; volatile int64_t i64_z; volatile float f_x = 1.234567; volatile float f_y = 2.345678; volatile float f_z; volatile double d_x = 1.23456789; volatile double d_y = 2.34567890; volatile double d_z; int main() { uint32_t i,overhead,i8_result,i16_result,i32_result,i64_result,f_result,d_result; pc.printf("\n\nBenchMark TEST START\n\n // All calcurates repeat %d times\n\n",REPEAT); // overhead t.reset(); t.start(); for(i=0;i<REPEAT;i++){ } overhead = t.read_us(); t.stop(); pc.printf("Overhead: %d us\n",overhead); pc.printf("\nADD\n\n"); lOOPMACRO(i8,+); lOOPMACRO(i16,+); lOOPMACRO(i32,+); lOOPMACRO(i64,+); lOOPMACRO(f,+); lOOPMACRO(d,+); pc.printf("\nSUB\n\n"); lOOPMACRO(i8,-); lOOPMACRO(i16,-); lOOPMACRO(i32,-); lOOPMACRO(i64,-); lOOPMACRO(f,-); lOOPMACRO(d,-); pc.printf("\nMULTI\n\n"); lOOPMACRO(i8,*); lOOPMACRO(i16,*); lOOPMACRO(i32,*); lOOPMACRO(i64,*); lOOPMACRO(f,*); lOOPMACRO(d,*); pc.printf("\nDIV\n\n"); lOOPMACRO(i8,/); lOOPMACRO(i16,/); lOOPMACRO(i32,/); lOOPMACRO(i64,/); lOOPMACRO(f,/); lOOPMACRO(d,/); pc.printf("\nDONE\n"); }