Home > Technologie > ESP8266 - NodeMCU - CPU-Geschwindigkeitstest

ESP8266 - NodeMCU - CPU-Geschwindigkeitstest

0
Advertisement

ESP8266 - NodeMCU - CPU-Geschwindigkeitstest

Einfach gesagt, schnellere CPUs vervollständigen mehr Berechnungen, mehr Zeilen Code und mehr Haushalt Aufgaben in einem bestimmten Zeitraum.

Theoretisch sollte eine CPU mit der doppelten Geschwindigkeit eine Aufgabe in etwa der Hälfte der Zeit abschließen. Schneller!

Die neueste Version von NodeMCU hat die Möglichkeit, die CPU-Frequenz des ESP8266 einzustellen.

Die Voreinstellung für den ESP8266 beträgt 80 MHz. Mit NodeMCU können Sie zur Laufzeit umschalten, ob die CPU standardmäßig 80 MHz oder doppelt so schnell mit 160 MHz laufen soll.

Der Befehl lautet: node.setcpufreq ()

Für 80 MHz: node.setcpufreq (node.CPU80MHZ)

Für 160 MHz: node.setcpufreq (node.CPU160MHZ)

80Mhz und 160Mhz sind die einzigen Wahlen.

Funktioniert das wirklich? Mal schauen.

Schritt 1: Lua-Code.

Ich blitzte ein ESP8266-01 mit der neuesten Version von NodeMCU: nodemcu_integer_0.9.6-dev_20150704.bin

Ich habe eine lua-Datei mit dem Namen 'speedtest.lua' erstellt:

Print ( "Test wird Loop 1.000.000 mal @ 160Mhz, \ n und wieder @ 80Mhz.")
Drucken ( "Test starten --------------- \ n")

Drucken ( "\ n +++++++++++++++ \ n")
Print ( "node.setcpufreq (node.CPU160MHZ)")
Node.setcpufreq (node.CPU160MHZ)
Drucken (tmr.now ())

Starttime = tmr.now ()
Lokales i = 1
Während i <1000000 tun
I = i + 1
Ende
Drucken (tmr.now ())
Endtime = tmr.now ()

Print ( "Gesamtzeit @ 160MHZ" ..endtime - starttime .. "Mikrosekunden")
Sammelgut ()
Tmr.wdclr ()
Drucken ( "\ n +++++++++++++++ \ n")
Print ( "node.setcpufreq (node.CPU80MHZ)")
Node.setcpufreq (node.CPU80MHZ)
Drucken (tmr.now ())
Sammelgut ()
Starttime = tmr.now ()
Lokales i = 1
Während i <1000000 tun
I = i + 1
Ende
Drucken (tmr.now ())
Endtime = tmr.now ()
Print ( "Gesamtzeit @ 80MHZ" ..endtime - starttime .. "Microseconds")
Print ( "\ n Ende des Tests")
Sammelgut ()

Schritt 2: Ergebnisse:

Dofile (speedtest.lua) Freitag, den 07. August 2015 08:37:55

Dofile ( "speedtest.lua")

Test wird Loop 1.000.000 mal @ 160Mhz, und wieder @ 80Mhz.

Testbeginn ---------------

Node.setcpufreq (node.CPU160MHZ)

1517836198
1519473254

Gesamtzeit @ 160MHZ 1626061 Mikrosekunden

+++++++++++++++

Node.setcpufreq (node.CPU80MHZ)

1519478214
1522730804

Gesamtzeit @ 80MHZ 3251941 Mikrosekunden

Ende der Prüfung.

> Node.compile ( "speedtest.lua")>

Dofile (speedtest.lc) Freitag, 07. August 2015 08:38:12

Dofile ( "speedtest.lc")

Test wird Loop 1.000.000 mal @ 160Mhz, und wieder @ 80Mhz. Testbeginn ---------------

Node.setcpufreq (node.CPU160MHZ)

1534796621
1536433701

Gesamtzeit @ 160MHZ 1626101 Mikrosekunden

+++++++++++++++

Node.setcpufreq (node.CPU80MHZ)

1536438677
1539691273

Gesamtzeit @ 80MHZ 3251938 Mikrosekunden

Ende der Prüfung.

Schritt 3: Einige Beobachtungen:

Die Testergebnisse sind klar, der ESP8266 führt die Schleife doppelt so schnell durch!

Obwohl, ich habe nicht umfangreiche Tests durchgeführt, glaube ich, dass, sobald die CPU auf 160 MHz eingestellt ist, wird es bei dieser Geschwindigkeit bleiben, bis neu gestartet oder zurückgesetzt. Ich habe ähnliche Tests in anderen Dateien aus lua-Dateien aufgerufen.

Putting - node.setcpufreq (node.CPU160MHZ) - in der init.lua sollte gut zu gehen.

Dieser Test wurde mit der 'integer' Version der Firmware durchgeführt. Die gleichen Dateien in der "float" -Version lieferte ähnliche Ausgabe, aber ich musste die Schleife von 1.000.000 auf 100.000 reduzieren, um den ESP vom Neustart zu halten.

Ich finde NodeMCU eine extrem zuverlässige Firmware zu sein und es scheint, dass die Arbeit noch für weitere Verbesserungen läuft.

Es trägt zu beobachten!

Related Reading