Whetstone performance benchmark to compare the speed of my new Nucleo STM32 F401RE board to the Arduino. To summarize, while my Arduino Leonardo knockoff running at 16 Mhz runs through the 1,000 loops in 82 seconds for 1.21MIPS the Nucleo takes only 30-31 seconds and yields 3.2-3.3 MIPS. I would have expected better relative performance from a 32 bit ARM M4 processor over an 8 bit AVR. Maybe it will get better once the FPU is enabled in the online compiler.

Dependencies:   ST_401_84MHZ mbed

Whetstone on the Nucleo at 84 MHz:

  • Loops: 1000, Iterations: 1, Duration: 30 sec.
  • C Converted Double Precision Whetstones: 3.3 MIPS
  • Code size: 22.1 kB

Whetstone on the Arduino Leonardo at 16 MHz:

  • Loops: 1000Iterations: 1Duration: 82320 millisec.
  • C Converted Double Precision Whetstones: 1.21 MIPS
  • Code size: 9,086 bytes

benchmark.cpp

Committer:
kirchnet
Date:
2014-04-28
Revision:
1:466dbb9d16a8
Parent:
0:525baf7de2db

File content as of revision 1:466dbb9d16a8:

#include "benchmark.h"
#include "stm32f4xx_hal.h" 
#include "ST_F401_84MHZ.h"  

//The program will run first at the clock speed at which you have set your board 
//and then switch to 84 MHz. Presumably your board is set to 84 MHz already.
 
main(){
    whetstone(0);
    SystemClock_Config_84MHz_internal();                                     // Now speed up to 84 MHz
    whetstone(84);
    //linpack();
    //dhrystone();
    }