Arduinoのシリアル通信上で出力の1つに
Serial.println()
があります。
また、Arduinoはプログラムを書き込むメモリがものすごく小さいです
たくさんprintlnを使うとその分メモリを使います
printlnを調べてみる
実際に書き込まなくてもコンパイル時に結果が出るので何バイト消費してるかを比べます
検証ソースコード
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void setup() { | |
Serial.begin(9600); | |
Serial.println("0"); | |
//Serial.println('0'); | |
//Serial.println(0); | |
//Serial.println(); | |
//Serial.print(' '); | |
} | |
void loop() { | |
} |
シリアル通信を開始して、出力するプログラムです。
結果
関数 | スケッチ | 変数 |
なし | 1390 | 182 |
println(0) | 1652 | 186 |
println(‘0’) | 1432 | 186 |
println(“0”) | 1428 | 188 |
自分の予想では引数に数値の0を入れるほうが消費が少ないと思っていましたが、1番消費してしまいました。
文字列”0″の場合はスケッチでは’0’と比べて少ないですが、何故か変数の消費が多くなりました。
また、print()関数ですが、引数に何も入れない場合と「”」のように何も与えない場合は文字がないとコンパイル時にエラーが出ました。
printlnは改行が入るのでそのため、引数に値がなくても実行できるのかな?
どれが最適なものとは言い切れませんが、参考になりそうです
コメント