
先日、ピン入出力の高速化とその速度比較を行ったのですが、今回は演算処理の速度比較を行ってみます。

UNO R3、R4、とついでにRaspberry Pi Picoの3機種で比較。ただ単純にひたすら足し算していくだけの処理で速度比較してみます。
使用スケッチ
// 2023/11/26 imo lab.
// https://garchiving.com/
uint32_t core0_Timer, core0_dt, ans;
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
Serial.println("start....");
core0_Timer = micros();
for (int32_t i = 0; i < 1000000; i++) {
int32_t x[3] = { 0, 0, 1 };
ans = 0;
while (ans < 100000000) {
ans = x[0] + x[1] + x[2];
x[0] = x[1];
x[1] = x[2];
x[2] = ans;
}
}
core0_dt = micros() - core0_Timer;
Serial.print(" ans:");Serial.println(ans);
Serial.print("time: ");Serial.print(core0_dt / 1000000.0, 3);Serial.println(" s");
}
ひたすら足し算していくだけの処理ですが、大きな数値の出し入れをしたかったのでこのような処理をしてます。トリボナッチ数列と呼ばれる前3つの値を足し続ける数列で、1億を超えるまで計算。でその計算を100万回繰り返す処理時間を計測します。
UnoR3の測定結果

UnoR3ではおそよ47秒程の処理時間。R4とPicoも全く同じスケッチで時間測定します。(PicoはEarle F. Philhower版のボード使用)
各ボードの比較結果
| ボード | 動作クロック | 処理時間 |
|---|---|---|
| UNO R3 | 16MHz | 47.217s |
| UNO R4 | 48MHz | 4.784s |
| Pico | 133MHz | 1.989s |
| Pico(OC) | 240MHz | 1.098s |
R3、R4は動作クロック差の 割にはずいぶん早くなってる感じです。Picoはオーバークロック(240MHz)も比較してます。


コメント