Arduino Mega256 vs Due vs chipKit Uno32 vs Intel Galileo


As a follow up to my older post on Adruino vs Intel Galileo benchmark, I've received a mail from James Doulton who had fixed the benchmark script and benchmarked several other boards.

I quote him verbatim:

I discovered that the Arduino Mega256, like the Adruino Uno, does not support double arithmetic. So I modified the code to run float instead. I also got an Arduino Due today – it is based on a 32-bit ARM processor and runs at 84MHz. Now my results look like this:

Hardware Software Iterations Time, ms Time/Iter, us Precision
Arduino Mega256 this file 5000 16432 3286.40 32-bit float
Arduino Due this file 50000 38788 775.76 64-bit double
chipKit Uno32 this file 50000 31964 639.28 64-bit double
Arduino Due this file 50000 27729 554.58 32-bit float
chipKit Uno32 this file 50000 23867 477.34 32-bit float
Intel Galileo this file 5000000 275970 55.19 32-bit float
Intel Galileo this file 5000000 282265 56.5 64-bit double

It is interesting that the Arduino Due (at 84MHz) is slower than the chipKit Uno32 (at 80MHz). Also this shows that the Galileo’s floating point unit does all calculations at the same precision (80-bit IEEE precision, I think).

James' script is different from what was used in the old post:

  • Serial.begin(9600); is called in the setup
  • all Serial.print statements are moved out of time measurement block

Another interesting observation which James made:

For my application the most important difference between these boards is the start-up time. The Arduinos (both of them) start almost instantly in less than 1 second. The chipKit Uno32 takes about 7 seconds to start running the sketch. The Galileo takes more than 30 seconds.

I suppose these results are interesting to other Arduino users.