Arduino UNO ESP8266 ESP32 MicroBit IO操作速度對比記錄


ESP8266 Arduino C編程

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

void loop(){
  digitalWrite(13,HIGH);
  digitalWrite(13,LOW);
  digitalWrite(13,HIGH);
  digitalWrite(13,LOW);

}

可以看到,相鄰的兩次digitalWrite之間是958ns(納秒),而兩次loop之間是6.6us(微秒),速度還是很快的,而Arduino UNO得到了如下結果:

可以看到無論是loop內的,還是loop之間的間隔,都是接近的,都在3.25-3.7之間,速度比ESP8266慢幾倍的水平(考慮到時序都是在loop內完成)

下邊是同樣的代碼ESP32得到的結果

相比ESP8266,還是有很大進步的(綜合估計得有10倍)

下邊是Micropython的:

import machine

pin13 = machine.Pin(13, machine.Pin.OUT)
while True:
    pin13.value(1)
    pin13.value(0)
    pin13.value(1)
    pin13.value(0)

先上ESP32的:

嗯,Arduino水平。

再看ESP8266:

34us的水平。比Arduino慢一個數量級,但是ESP8266有個emit功能,現在測試一下:

也就提高了1倍,並且不均勻,感覺像是GC占的時間。

接下來是Microbit,Microbit支持python blockly(javasript)兩種編程方式,現在分別測試:

 

執行時間倒是可以的,5.37us,能差不多Arduino C語言的水平。但是loop之間就差太遠了,達到了24ms,說明JavaScript系統太耗時了?

upython得到的是一個差不多正常的方波,但是執行速度就有點太慢了,70多微秒,基本是沒法模擬時序的,所以Microbit還是盡量用BLockly編程吧,雖然運行時

需要的時間超長,但是執行速度還是可以的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM