MakeCodeの処理速度のおさらい
以前MakeCodeでループ処理を1秒間実施した場合に何回処理されるか、を調べてみました。
その結果、実機ベースの処理速度は1秒間に2万回弱程度となりました。
かなりのスピードです。
MakeCode以外の開発環境
MakeCodeは代表的な開発環境ですが、公式のものではmicro:bit Python Editorが提供されています。
こちらで1秒間のループ処理を計測してみました。
Geminiに書いてもらったカウントアッププログラム.py
# micro:bit Python Editor (v3) 用プログラム
from microbit import *
# 変数nをゼロにリセット
n = 0
# カウント開始時刻を設定
start_time = running_time()
# 1秒間に計測する時間 (ミリ秒)
DURATION_MS = 1000
# プログラムのメインループ
while True:
# 現在時刻を取得
current_time = running_time()
# 経過時間を計算
elapsed_time = current_time - start_time
# 1秒経過したかチェック
if elapsed_time < DURATION_MS:
# 経過していなければ変数nにプラス1 (カウントアップ)
n += 1
# ※ ループが非常に速いため、このブロックが1秒間連続で実行されます
else:
# 1秒経過したらカウントアップを停止(メインループは継続)
# 変数nの値をmicro:bitに表示
display.scroll(n)
# スクロール表示が終わった後、プログラムをフリーズさせる
# これにより、計測と表示が完了し、無駄な処理を停止できます。
break
# プログラムはここで終了し、計測結果が表示されたままになります
実験結果
1秒間に何回のループを回せるか、MakeCodeが圧勝でした!!!
| 項目 | MakeCode | Python Editor |
|---|---|---|
| シミュレーター | 約900万回 | 約1万5千回 |
| 実機 | 約2万回 | 約3千回 |
開発環境の差によるスピードの差について
なぜMakeCodeの方が断トツに早いのかGeminiに聞いてみたところ下記の回答を得た。
なんと、Pythonだからといって速いわけではないのですね。
今はMakeCodeでPythonも書けるようになったのでPythonEditorを使う理由は限定的ですね。
(PythonEditorならLED表示で強制的にWaitがかからないのは素晴らしい)
| 項目 | MakeCode (ブロック/JavaScript/Python) | Python Editor (MicroPython) |
|---|---|---|
| 実行速度 | 非常に速い | 比較的遅い |
| 実行方式 | コンパイル型 (C++ベース) | インタープリタ型 |
| 動作の仕組み | 機械語に変換され、CPUが直接実行する。 | 実行時に一行ずつ**通訳(解釈)**しながら実行する。 |
| メモリ効率 | 高い(リソース消費が少ない) | 低い(インタープリタ分の消費がある) |
| 主な利点 | 速度、パフォーマンス、ハードウェアに近い制御。 | 構文のシンプルさ、可読性、複雑なロジックの書きやすさ。 |
| 最適な用途 | センサーの高速処理、リアルタイムな制御、ゲームなど。 | 初心者教育、プロトタイピング、複雑なデータ処理。 |
Geminiさんの解説