Hiệu suất MicroPython gây tranh cãi về khả năng ứng dụng thực tế trên vi điều khiển

Nhóm Cộng đồng BigGo
Hiệu suất MicroPython gây tranh cãi về khả năng ứng dụng thực tế trên vi điều khiển

Một nghiên cứu đánh giá hiệu suất gần đây của MicroPython trên nhiều vi điều khiển khác nhau đã châm ngòi cho các cuộc thảo luận về những hạn chế thực tế của ngôn ngữ này và các phương pháp kiểm thử. Nghiên cứu so sánh hiệu suất trên các thiết bị từ ESP8266 đến Raspberry Pi Pico 2W , cho thấy những khoảng cách hiệu suất đáng kể khiến một số nhà phát triển đặt câu hỏi về tính phù hợp của MicroPython cho một số ứng dụng nhất định.

Phiên bản phần mềm đã được kiểm tra:

  • MicroPython 1.25.0 (phiên bản chính thức mới nhất)
  • CPython 3.13 trên laptop
  • CPython 3.9 trên Raspberry Pi 4

Kết quả hiệu suất gây ngạc nhiên

Kết quả đánh giá đã nhận được sự chỉ trích gay gắt từ cộng đồng phát triển, đặc biệt là về thời gian thực thi các thuật toán phổ biến. Bài kiểm tra sắp xếp nổi bọt, bao gồm việc sắp xếp 2.000 số ngẫu nhiên, mất hơn 80 giây trên một số vi điều khiển 32-bit chạy ở tần số 160MHz. Điều này đã thúc đẩy các cuộc thảo luận sôi nổi về việc liệu mức hiệu suất như vậy có khiến MicroPython không phù hợp cho các ứng dụng nhạy cảm về thời gian hay không.

Tạo 2000 số ngẫu nhiên và sắp xếp chúng bằng thuật toán sắp xếp nổi bọt trên vi điều khiển 32bit 160Mhz mất 80 giây? Đây chính xác là lý do tại sao micropython chỉ là một đồ chơi.

Kết quả cho thấy Raspberry Pi Pico 2W nhìn chung vượt trội hơn ESP32-S3 trong nhiều bài kiểm tra, điều này khiến nhiều người ngạc nhiên vì ESP32 được biết đến như một lựa chọn vi điều khiển cao cấp.

Kết quả kiểm tra hiệu năng:

  • Fibonacci (số thứ 30): Pico 2W hoàn thành trong khoảng một nửa thời gian so với ESP32-S3
  • Bubble Sort (2.000 số): Thời gian thực thi vượt quá 80 giây trên một số vi điều khiển 160MHz
  • Fibonacci không đệ quy: Hiệu năng tốt hơn trên tất cả các thiết bị được kiểm tra

Cộng đồng đặt câu hỏi về phương pháp kiểm thử

Một số nhà phát triển đã nêu lên mối quan ngại về cách tiếp cận và phạm vi của bài đánh giá. Những người chỉ trích cho rằng việc so sánh hiệu suất MicroPython trên các nền tảng phần cứng khác nhau không cung cấp những hiểu biết có ý nghĩa về hiệu quả của ngôn ngữ này. Họ đề xuất rằng việc so sánh với mã C tương đương chạy trên cùng vi xử lý sẽ cung cấp dữ liệu có giá trị hơn về chi phí hiệu suất thực tế của MicroPython .

Những người khác chỉ ra rằng nghiên cứu đã bỏ lỡ cơ hội kiểm thử các bộ phát MicroPython khác nhau và các tính năng tối ưu hóa có thể tác động đáng kể đến kết quả hiệu suất. Một số thành viên cộng đồng lưu ý rằng các thuật toán đệ quy không có ghi nhớ gây ra tràn ngăn xếp nên được coi là hành vi mong đợi chứ không phải là một hạn chế.

So sánh RAM thiết bị:

  • ESP8266: ~80KB RAM
  • ESP32-S3: ~512KB RAM
  • Raspberry Pi Pico 2W: ~264KB RAM
  • Framework Laptop: ~32GB RAM (nhiều hơn ESP8266 524,288 lần)

Ý nghĩa rộng lớn hơn đối với phát triển nhúng

Cuộc thảo luận mở rộng ra ngoài các con số hiệu suất thô để đặt ra những câu hỏi cơ bản về vai trò của MicroPython trong phát triển nhúng. Trong khi nghiên cứu ban đầu thừa nhận rằng vi điều khiển phục vụ các mục đích khác nhau so với máy tính truyền thống, cuộc tranh luận trong cộng đồng tiết lộ những chia rẽ sâu sắc hơn về sự đánh đổi hiệu suất có thể chấp nhận được.

Ví dụ thực tế của tác giả về việc xây dựng một bộ điều nhiệt tùy chỉnh với giá dưới 10 euro cho thấy khả năng tiếp cận của MicroPython đối với các dự án của người đam mê. Tuy nhiên, các nhà phát triển chuyên nghiệp vẫn chia rẽ về việc liệu sự tiện lợi của cú pháp Python có biện minh cho những hạn chế hiệu suất trong môi trường sản xuất hay không.

Cuộc tranh luận đang diễn ra phản ánh những căng thẳng rộng lớn hơn trong phát triển nhúng giữa tính dễ sử dụng và hiệu suất tối ưu, với MicroPython đứng ở trung tâm của cuộc thảo luận về sự đánh đổi này.

Tham khảo: Benchmarking MicroPython