Есть ли предел для коротких строк, где использование макроса F()
приносит больше оперативной памяти, а затем сохраняется?Существует ли минимальная длина строки для F()?
For (надуманный) Например:
Serial.print(F("\n"));
Serial.print(F("Hi"));
Serial.print(F("there!"));
Serial.print(F("How do you doyou how?"));
ли какой-либо один из них будет более эффективным без F()
?
Я предполагаю, что он использует некоторую ОЗУ для перебора по строке и копирования ее из PROGMEM в RAM. Я думаю, вопрос в том, сколько? Кроме того, здесь есть фрагментация кучи?
Я рассматриваю это исключительно с точки зрения сохранения SRAM.
Макрос F() используется для хранения строки во флэш-памяти, полную документацию можно посмотреть в http://playground.arduino.cc/Learning/Memory. Зависит от того, как вы хотите использовать свою строку, вы можете подумать о скорости доступа для флэш-памяти или sram, для этого вы можете увидеть http://arduino.stackexchange.com/questions/221/what-can-i-do-if-i -run-из-флэш-памяти или-SRAM. – user1929959
@ user1929959 В «полной документации» есть полное предложение на макросе 'F()'. Я ясно дал понять, что «я рассматриваю это исключительно с точки зрения сохранения SRAM» в моем вопросе. – frnhr
Единственный правильный ответ - это зависит от этого, поэтому это не по теме: мнение основано и слишком широкое, поскольку объяснение того, как профилировать это, займет больше, чем разрешено в окне ответа. –