Вопросы по коду. - страница 2

 

Нужно ли избегать того, чтобы функция каждый новый тик выполняла одни и те же (не сложные) действия?

Это ведь будет загружать систему? По хорошему ведь нужно прописывать разовое исполнение. Хотя переменная-выключатель тоже хранится в оперативной памяти и значит загружает систему.

Кто знает как ой вариант лучше?

 
gnesnyi #:

Нужно ли избегать того, чтобы функция каждый новый тик выполняла одни и те же (не сложные) действия?

Это ведь будет загружать систему? По хорошему ведь нужно прописывать разовое исполнение. Хотя переменная-выключатель тоже хранится в оперативной памяти и значит загружает систему.

Кто знает как ой вариант лучше?

Если эти действия надо выполнить только один раз - вынести их в инициализацию. Если периодически, но не обязательно на каждом тике - OnTimer().

Переменная типа bool занимает в памяти один байт, её проверка выполняется максимально быстро. Выполнять ненужные действия на каждом тике скорее всего будет "дороже".

 
gnesnyi #:

Нужно ли избегать того, чтобы функция каждый новый тик выполняла одни и те же (не сложные) действия?

Это ведь будет загружать систему? По хорошему ведь нужно прописывать разовое исполнение. Хотя переменная-выключатель тоже хранится в оперативной памяти и значит загружает систему.

Кто знает как ой вариант лучше?

Если таких переменных до 10 или 100 даже, то на 4 ядрах 2 ггц можно на каждом тике пару действий  плюс минус умножить сравнить делать, делить дороже. Степень, логарифмы тригонометрия дорогие действия.

Но конечно код нужно делать так, что бы по действиям проца и загрузке памяти он был легче. Но все в разумных пределах.

 
Sergey Gridnev #:
Напишите в коде:
if( true==10 ) { Print("true==10"); }
и посмотрите, произойдет ли вывод на печать.

Вы абсолютно не правильно всё понимаете. Может этот код поможет вам разобраться

  int bb = 10;
  if(bb)
  Print((bool)bb);

Можете поставить любое число отличное от нуля и вы поучите одинаковый результат.

 

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

Почему, я видел у некоторых в коде, пишут вот такую конструкцию: if (BL == true). Зачем? BL логическая переменная какой смысл еще дополнительно производить операцию сравнения? Это от великого ума или от незнания алгебры логики. Можно же просто написать if (BL).

 
Vitalii Ananev #:

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

Почему, я видел у некоторых в коде, пишут вот такую конструкцию: if (BL == true). Зачем? BL логическая переменная какой смысл еще дополнительно производить операцию сравнения? Это от великого ума или от незнания алгебры логики. Можно же просто написать if (BL).

От не знания синтаксиса булевых переменных) ну и что бы понятней было в начале.
 
Valeriy Yastremskiy #:
От не знания синтаксиса булевых переменных) ну и что бы понятней было в начале.

В принципе я тоже так думал, что от не знания.

 
Alexey Viktorov #:

Не вводите людей в заблуждение. false это 0 — всё остальное true.

Ни кого я не собирался вводить в заблуждение. Просто имел в виду бинарные 0 и 1. Примитивные логические операции в простейших микросхемах именно так и работают. Бинарный ноль нет напряжения, бинарная единица есть напряжение. 

 
Vitalii Ananev #:

Ни кого я не собирался вводить в заблуждение. Просто имел в виду бинарные 0 и 1. Примитивные логические операции в простейших микросхемах именно так и работают. Бинарный ноль нет напряжения, бинарная единица есть напряжение. 

Зачем вы сравниваете мягкое с тёплым? Одно дело MQL5 и совсем другое микросхемы. Повторяю вам ещё раз: 0 это false, а всё остальное true.

 
Vitalii Ananev #:

Бинарный ноль нет напряжения, бинарная единица есть напряжение. 

Напряжение есть в обоих случаях. Отличается абсолютной величиной. К примеру, "0" - 0.4В, а "1" - 2.4В.

Причина обращения: