マンデルブロベンチマーク測定結果の一覧表
◆まえがき
マンデルブロベンチマークの測定結果を集めたページです。組み込みで使われているCPU(いわゆるマイコン)の速度比較に役立つと思います。
関連ページ: ・組み込み用CPUの性能をマンデルブロベンチで測定してみた ・ESP32でASCIIART(マンデルブロ集合)ベンチマークを実行(続編) ◆マンデルブロベンチマークとは
主に組み込みのCPUの性能評価を目的に作ったもので、C言語で書いたマンデルブロ集合の計算速度を測定しています。オリジナルのアイディアは、はせりんさんがASCIIART(マンデルブロ集合)ベンチマークと言うページで公開されているBASICのプログラムから頂いたもので、これをC言語に書き直しています。
ベンチマークと言っても浮動小数点演算の速度を測っているだけなので、CPUや言語処理系の全ての性能を反映したものではありません。しかし、同一条件で比較することで性能の違いを比較することは出来ると思います。 ・実行結果画面
◆プログラム
マンデルブロ集合の計算を行って結果をメモリーに保存しその処理時間を測定しています。全部計算が終わったら、処理時間と総計算回数を出力し、最後にマンデルブロ集合のマップ(ASCII ART)を出力します。詳しくは関連ページをご覧ください。
総計算回数は11884回になっているはずで、もしこの値が違っていたら想定した通りに計算が行われなかった可能性があります。
・通常バージョン
20211216_MandelbroBench.txt (拡張子をinoに変更、BOM付きUTF-8)
・No Ascii Art バージョン (NoAA)
20211216_MandelbroBench_NoAA.txt (拡張子をinoに変更、BOM付きUTF-8)
RAMが小さなCPU(約2.5kB以下)の場合、こちらをお使いください。マンデルブロ集合の計算は行いますが、アスキーアートのメモリーへの保存と出力を省略しており、処理時間と総計算回数だけ出力します。
◆測定結果一覧 (表の最終更新日:2022/02/21)
この表は随時更新します。情報を連絡いただければ追記・修正しますので、コメントやツイッターなどで知らせて頂くと嬉しいです。
◆注意事項、他
・同じCPUでもコンパイラによって実行時間が違ってくる可能性があります。また、浮動小数点演算の精度によっても結果が異なってくる可能性があります。
・代入だけで参照が行われなかった変数は、コンパイラの最適化によって無かったことにされる可能性があるので処理時間が違ってくる可能性があります。できるだけそういうことが起こらないように、calcCount変数でループの一番内側の通過回数をチェックするようにしています。(volatile宣言で対策する方が良い?)
・このプログラムの実行結果は同じなので、究極の最適化として、コンパイラであらかじめ全部計算を行ってしまって結果をテーブルで持つようなことも可能だと思います。そんなのがあるかどうか知りませんが、ともかくそこまでやられるとこのベンチマークの結果は意味のないものになってしまいます。
◆まとめ、雑感
・現時点ではESP32が最強ということでしょうか。
・ARMのCPUと言うと速そうな印象を持っていたのですが、さほどでもない感じです。まあいろいろなIPがあるので、ひとくくりには言えないということですね。
・ラズパイの組織が開発したRP2040が思っていたほど速くないのが意外です。
・CPU(マイクロコントローラー)の性能にはIOの機能や消費電力などがあるので、このベンチマークの結果だけで優劣を語ることは出来ませんが、参考にはなると思います。
マンデルブロベンチマークの測定結果を集めたページです。組み込みで使われているCPU(いわゆるマイコン)の速度比較に役立つと思います。
関連ページ: ・組み込み用CPUの性能をマンデルブロベンチで測定してみた ・ESP32でASCIIART(マンデルブロ集合)ベンチマークを実行(続編) ◆マンデルブロベンチマークとは
主に組み込みのCPUの性能評価を目的に作ったもので、C言語で書いたマンデルブロ集合の計算速度を測定しています。オリジナルのアイディアは、はせりんさんがASCIIART(マンデルブロ集合)ベンチマークと言うページで公開されているBASICのプログラムから頂いたもので、これをC言語に書き直しています。
ベンチマークと言っても浮動小数点演算の速度を測っているだけなので、CPUや言語処理系の全ての性能を反映したものではありません。しかし、同一条件で比較することで性能の違いを比較することは出来ると思います。 ・実行結果画面

No. | ボード(モジュール)名 | CPU | clock (MHz) | 実行時間 (us) | 環 境 | 情報ソース | 備 考 |
---|---|---|---|---|---|---|---|
1 | Arduino UNO | ATmega328P | 16 | 1018284 | Arduino IDE | ラジオペンチ | NoAAで測定 |
2 | ESP8266 | ESP-WROOM-02 | 80 | 157728 | Arduino IDE | ラジオペンチ | |
3 | ESP32 DEVKIT | ESP-WROOM-32 | 240 | 21096 | Arduino IDE | ラジオペンチ | |
4 | ESP32 onATmega328 socket | ESP-WROOM-32 | 240 | 21063 | Arduino IDE | ラジオペンチ | 自作モジュール |
5 | STM32F405 | 168 | 22602 | シングルタスク FreeRTOS無し | Hさん コメント | ||
6 | M5Stack | ESP-WROOM-32 | 240 | 2680 | SASANO Takayoshi @uaa | 速すぎない? | |
7 | Nucleo-F441RE | STMF411RE (Coretex-M4 w/FPU) | 72631 | Mbed OS 6.15 bare-metal | 匿名さん コメント | ||
8 | Blue Pill | STM32F103 (Coretex-M3) | 72 | 242710 | Mbed OS 6.15 | 匿名さん コメント | |
9 | Arduino MEGA 2560 | ATmega2560 | 16 | 1023896 | Arduino IDE | yas @yas0107 Dec 11 | NoAAで測定 |
10 | seeeduino XIAO | SAMD21G18(Coretex-M0) | 48 | 635154 | Arduino IDE | yas @yas0107 Dec.11 | |
11 | Wio Terminal | ATSAMD51P19A | 120 | 31150 | Arduino IDE | コメンテーターさんコメンテーターさん | 200MHzはOC |
12 | 200 | 18680 | |||||
13 | Seeed XIAO RP2040 | RP2040 | 125 | 112733 | Arduino IDE | yas @yas0107 Dec.15 | 200,250MHzはOC |
14 | 133 | 105871 | |||||
15 | 200 | 70170 | |||||
16 | 250 | 56072 | |||||
18 | Pi Pico | RP2040(Coretex-M0+) | 133 | 191532 | Arduino IDE | yas @yas0107 Dec.15 | |
19 | HLK-W806 | W806 | 40 | 50121 | wm-sdk-w806? | SASANO Takayoshi@uaa てきとーな日記 02-Feb-2022 | コード他詳細は左記リンク参照2022/02/21追記 |
20 | 240 | 8471 | |||||
21 | W806 (wo/FPU) | 40 | 797724 | ||||
22 | 240 | 135073 | |||||
23 | |||||||
24 | |||||||
25 |