Делают ли Keyboard.begin() и Keyboard.end() мой код медленнее?

Я делаю клавиатуру IR Macro, и около 10 % кода посвящено командам Keyboard, которые должны иметь Keyboard.begin() и Keyboard.end() в методе, отвечающем за набор текста, влияет на скорость или размер? Мой код:

void decodeCode(){ // отправляем макросы.
  int pos = 0;
  for(int i = 0; i<output.length(); i++){
    if(output.charAt(i) == '$' && i!=output.length()-1){ //$ - это символ для "$pecial" символов
      i++;
      specialDecodeChar(output.charAt(i));
    }
    else if(output.charAt(i) == '%'){
      Keyboard.releaseAll();
    }
    else{
      Keyboard.press(output.charAt(i));
    }
  }
  Keyboard.releaseAll();
}

В настоящее время у меня есть Keyboard.begin() в setup().

, 👍0

Обсуждение

Весь код влияет на скорость и размер. Нет ничего бесплатного., @Majenko

keyboard.begin(), вероятно, является конструктором, а .end, вероятно, является деструктором. Мы не знаем наверняка, потому что здесь не весь ваш код. Обычно конструктор запускается один раз в течение жизни программы. И, ну, для встраиваемой программы дестуктор иногда просто упускают из виду. Итак, вопрос, на который нужно ответить: зачем вам нужно снова и снова вызывать эти функции?, @st2000

@st2000 Keyboard.begin() и keyboard.end() не являются конструкторами или деструкторами. Это обычные функции, обычно вызываемые из программы настройки или из любого другого места, где вы хотите запустить или остановить функциональность клавиатуры. Однако они оказываются пустыми функциями., @Majenko

Спасибо, что прояснили это, @Majenko., @st2000


1 ответ


Лучший ответ:

0

Функции Keyboard::begin() и Keyboard::end(), если вы на самом деле посмотрите на код - это пустые функции. Они ничего не делают.

Теоретически компилятор должен просто оптимизировать их.

,