Оптимизация кода
- Войдите на сайт для отправки комментариев
Пт, 10/05/2013 - 15:56
//Первый вариант if (potPinVal1 < 600 && potPinVal1 < potPinVal2+100 && VZ == 0 && ((millis()-VTimeZ)/1000)/60 > 20) { *** } else if (rtc[2] > 6 && rtc[2] < 12 && potPinVal1 > 400 && VZ == 2 && ((millis()-VTimeZ)/1000)/60 > 20) { *** }
//Второй вариант if ((millis()-VTimeZaluzijas)/1000)/60 > 20) { if (potPinVal1 < 600 && potPinVal1 < potPinVal2+100 && VZaluzijas == 0){ *** } else if (rtc[2] > 6 && rtc[2] < 12 && potPinVal1 > 400 && VZaluzijas == 2) { *** } }
Появился такой вопрос. Как лучще писать код. Вот выше я написал 2 варианта кода, они делают одно и тоже. Но конструкция разная. Подскажите какой из них быстрее будит работать и менее грузить Arduino?
Наверное второй будет немного быстрее. (чуть-чуть)
Так как операций деления там происходит меньше, чем в первом; а деления, умножения - тормозят сильнее, чем сложение/вычитание.
Спасибо, а вот еще такой вариант:
Я могу использовать и = и > для моей программы нет разницы. Но влияет ли это как-то на загруженность и скорость Arduino
Так же расскажите пожалуйста в чем разница между этими 1 равно и двумя, пример:
// Первый вариант
2
if
(((millis()-TimePIRval)) = 600 {
3
// Второй вариант
4
if
(((millis()-TimePIRval)) > 599) {
В первом ошибка, второй вариант верен. См.ниже.
if
(((millis()-TimePIRval)/1000) = 60) {
А вот тут - грубейшая ошибка. Один "=" - это оператор присваивания. У вас попросту, условие будет выполняться всегда.
if
(((millis()-TimePIRval)/1000) == 60) {
Здесь все в порядке. Да "==" - оператор сравнения.
= - это операция присваивания
== - это операция сравнения
А вот код типа
я бы не рекомендовал. millis постоянно меняется и точного совпадения можно и не поймать
Хорошо, спасибо. А вот еще пример:
Оба работают. Что лучше?
оба одинаковы, компилятор лишние скобки опустит
Подскажите пожалуйста в чем разница и как лучше?
Подскажите пожалуйста в чем разница и как лучше?
разница большая. а как лучше, это только вам известно.
Подскажите пожалуйста в чем разница и как лучше?
первый иф выполнится только когда переменная больше 0
второй когда больше или равнв