Raspberry Pi Pico と Arduino UNO の処理速度比較(簡易)

 Raspberry Pi Pico(ラズパイPico)をArduino開発環境からプログラムしてみます。まずは基本のLチカやってみるのと、ArduinoUNO、C/C++記述での処理速度を比較してみました。

▼PicoをArduino環境で使う方法はこちら▼

 GPIOピンの入出力記述は、Arduino記述のままです。

void setup() {
  pinMode(25, OUTPUT);
}

void loop() {
  digitalWrite(25, HIGH);
  delay(50);
  digitalWrite(25, LOW);
  delay(500);
}

▲PicoのオンボードLEDはGP25ピンに接続されてます。関数の使い方も書き込み方法のArduinoのままです。

▲Picoに書き込んで点灯確認。これだけでは少しさみしいので、ArduinoUNOや、C/C++記述との速度比較もしてみました。

 まずは、ArduinoUNOのサンプルソース(スケッチ)です。

  for (int i = 0; i < 9999; i++) {
    digitalRead(13);
  }
  
  for (int i = 0; i < 9999; i++) {
    raw = PINB & B00100000;
  }

▲13ピンの入力状態を確認する2パターンの方法です。後者は、レジスタ直接読み込んでます。よく見かける高速処理の記述となります。ともに10,000回読み込んだときの速度計測してみました。

スポンサーリンク

▼Uno結果▼

▲レジスタ読み込むほうが圧倒的に早いですね。(micros()で挟んでるだけなので速度計測はざっくりです。)

 次にラズパイPicoです。比較ソースは以下

  for (int i = 0; i < 9999; i++) {
    digitalRead(15);
  }

  for (int i = 0; i < 9999; i++) {
    raw = gpio_get(15);
  }

▲15ピンの状態を確認してます。前者はUNOと同様。後者はC/C++での記述です。ArduinoIDEでC/C++記述もそのまま書けます。

▼Pico計測結果▼

 C/C++のほうがマイコンよりの記述なので早いですね。また当然ですがArduinoよりもPicoのほうが高速で、UNO(digitalRead)、Pico(C/C++)と比べると50倍近く違います・・。ざっくりした計測なので参考て程度で・・。

 PicoをArduinoでそのまま使えるのはかなり便利です。

▼Picoのマルチコア(デュアルコア)を使った速度比較はこちら▼

コメント