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编程吧,虽然运行时

需要的时间超长,但是执行速度还是可以的

原文地址:https://www.cnblogs.com/yafengabc/p/11197001.html