Szukam obiektywnego, aktualnego porównania eLUA (NodeMCU) i MicroPython na ESP8266.
Mogę znaleźć tylko bardzo powierzchowne raporty / blogi użytkowników próbujących jednego lub drugiego. - W których brakuje całkowicie szczegółów technicznych.
Najbliższe, co mogłem znaleźć, to prawdopodobnie beznadziejnie przestarzałe i trudne do zrozumienia porównanie w projekcie MicroPython.
Byłbym zainteresowany oczywistymi pytaniami:
- użycie lampy błyskowej
- Wykorzystanie pamięci RAM przez VM po uruchomieniu
- Wykorzystanie pamięci RAM w zwykłym użyciu
- model wykonania (tj. w jaki sposób mapowane są „zadania” ESP8266?)
- wydajność wykonania
- łatwość rozbudowy (tj. dodanie modułu)
- wszystko inne, co może być istotne
Uważam, że po przestudiowaniu dokumentacji zrozumiałem następujące kwestie:
- NodeMCU ma dość drobnoziarniste opcje kompilacji, które pozwalają budować tylko wymagane moduły. Wydaje się, że pozwala to na pracę z małymi rozmiarami lampy błyskowej. W przypadku Micropython 512 KB wydaje się być absolutnym dolnym limitem, w którym to przypadku nie ma miejsca na kod zdefiniowany przez użytkownika. Nie jestem pewien, jak to się ma do NodeMCU.
- MicroPython ma wbudowaną funkcję WebREPL, która jest domyślnie automatycznie konfigurowana. Wydaje się, że NodeMCU nie ma podobnego wbudowanego.
- Wydaje się, że NodeMCU korzysta obecnie z większej społeczności, prawdopodobnie ze względu na dłuższy okres.
- Dokumentacja MicroPython jest dość nieformalna, brakuje jej całkowicie, jeśli chodzi o rozszerzenie kodu C. Dokumentacja NodeMCU wydaje się być doskonała.
Odpowiedzi:
Oto nieco inne podejście zamiast strzelaniny Lua vs. Python:
Sześć najpopularniejszych „środowisk uruchomieniowych” ESP8266:
Kluczową sprawą jest to, że większość kodu jest wspólna. Wszystkie biblioteki podstawowe w 1-5 pochodzą z 6. Pod cienką warstwą AT / Python / LUA / JavaScript / C kod podstawowy jest praktycznie identyczny. Oznacza to, że wydajność (RAM, FLASH, wykonanie) jest również podobna.
Ponieważ wydajesz się martwić szybkością i pamięcią RAM (flash jest ogólnie OK), co powiesz na opcję nr 5? Arduino to użyteczne IDE z dużą kolekcją przykładów. Możesz uruchomić swój pierwszy kod w niecałą godzinę i prawdopodobnie przewyższy on którykolwiek z silników skryptowych.
Z powodu braku znaczących różnic w użyciu pamięci wybrałbym MicroPython ze względu na większą liczbę bibliotek i aktywną społeczność online z czatem IRC. Udoskonalono dokumentację dodawania modułów C.
Opcja nr 6 zapewnia najwyższy potencjał optymalizacji, ale przy większej złożoności i bardziej stromej krzywej uczenia się.
Wreszcie dobra zasada ESP8266: Każde połączenie TCP / IP może zużywać do ~ 3k pamięci. Zawsze oczekuj mniej niż 5 jednoczesnych połączeń!
TL; DR: Aplikacje ESP8266 mają większość wspólnego kodu i działają podobnie. Wybierz silnik skryptowy, który Ci się podoba lub przejdź do C / IDE-12E. Nie oczekuj więcej niż 5 jednoczesnych połączeń IP.
źródło