2022年9月25日日曜日

Raspberry Pi PicoでMicroPythonとArduino言語の実行時間を比較する

Raspberry Pi PicoはArduino IDEでも開発できるが,公式推奨のMicroPythonとどれくらい実行速度に差が出るかを検証した.


 アナログ入力の読み取り処理をMictoPythonとArduino言語で記述し,それぞれ1000回実行したときの実行時間から読み取り1回あたりの実行時間を計算した.

MicroPythonのプログラム

import utime
import machine

adc=machine.ADC(0)
time1=utime.ticks_us()

for i in range(1000):
    a=adc.read_u16()
    
time2=utime.ticks_us()
print(utime.ticks_diff(time2,time1))


Arduino言語のプログラム

void setup() {
  Serial.begin(9600);
}

unsigned long time1, time2;
uint16_t a;

void loop() {
  // put your main code here, to run repeatedly:
  time1=micros();

  for (int i=0; i < 1000; i++) {
    a=analogRead(26);
  }
  
  time2=micros();
  Serial.println(time2-time1);

  delay(5000);
}

 結果は以下のようになった.参考としてArduino Everyの結果も載せている.


 最も実行時間が速いのはArduino言語で,MicroPythonの約2.5倍,Arduino Everyに対しては19倍速かった.実行時間への要求がシビアな場合は,MicroPythonよりもArduino言語を使った方が良いのかもしれない.

0 件のコメント:

コメントを投稿