Оптимизация кода. Как лучше?

 

Вот такой:

double haOpen=iCustom(NULL,per1,"Heiken Ashi",2,shift1);
double haClose=iCustom(NULL,per1,"Heiken Ashi",3,shift1);
 
if(haOpen<haClose)
  {
   ...
  }
if(haOpen>haClose)
  {
   ...
  }
и такой вариант:
if(iCustom(NULL,per1,"Heiken Ashi",2,shift1)<iCustom(NULL,per1,"Heiken Ashi",3,shift1)
  {
   ...
  }
if(iCustom(NULL,per1,"Heiken Ashi",2,shift1)>iCustom(NULL,per1,"Heiken Ashi",3,shift1)
  {
   ...
  }
Какой из них будет наиболее экономичным в плане потребляемых ресурсов? Или способ записи не имеет никакой разницы?
 
Однозначно первый
 
конечно первый вариант. Ведь все равно создается переменная под вычисляемое значение условия. Во втором случае их будет 4 а в первом всего 2.

Правда, есди ты напишешт структуру типа

if(iCustom(NULL,per1,"Heiken Ashi",2,shift1)<iCustom(NULL,per1,"Heiken Ashi",3,shift1)
  {
   ...
  }
else
  {
   ...
  }
по прожорливости она не будет отличаться от первой.

Но лучше чтоб на этот вопрос ответили сами разработчики компилятора.


Кстати у меня тоже есть вопрос по оптимизации.


Только что посмотрел на один индюкатор и узнал для себя новый способ задания переменной аля "свойство-объекта"

int Correl.Period = 14;
string Base.Symbol;

В документации ничего не нашел :(.     Если я правильно понимаю на этом вся песня и заканчивается?

 
sergeev:.
Кстати у меня тоже есть вопрос по оптимизации.

Только что посмотрел на один индюкатор и узнал для себя новый способ задания переменной аля "свойство-объекта"

int Correl.Period = 14;
string Base.Symbol;

В документации ничего не нашел :(. Если я правильно понимаю на этом вся песня и заканчивается?


Нет тут никаких свойство-объект. Просто такое имя переменной)
 
Блин, а как все красиво начиналось. :(

Почему же тогда в документации не описывается задание таким способом...
 
sergeev:
Блин, а как все красиво начиналось. :(

Почему же тогда в документации не описывается задание таким способом...

Может вам в доках еще написать что в качестве переменных мат можно записывать? :-)
 
xeon:
sergeev:
Блин, а как все красиво начиналось. :(

Почему же тогда в документации не описывается задание таким способом...

Может вам в доках еще написать что в качестве переменных мат можно записывать? :-)

К сожалению разработчики по правилам форума мат не могут употреблять,  хотя читая наши посты очень хотят :)
 
Как шутку прочитал в инете: прислал ДЦ пароль для демо счёта "afigvam". Хотя там была вариация с матом :)
когда эту шутку кинул другу то он так серёзно говорит: Ну надо тогда как прибыль появиться бежать от этого ДЦ поскоренькому :)
 
А ежели будет такой:
if(Bid-OrderOpenPrice()>Point*TrailingStop)
       {
        if(OrderStopLoss()<Bid-Point*TrailingStop)
          {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
           return(0);
          }
       }
И такой варианты:
double open=OrderOpenPrice();
if(Bid-open>Point*TrailingStop)
       {
        if(OrderStopLoss()<Bid-Point*TrailingStop)
          {
           OrderModify(OrderTicket(),open,Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
           return(0);
          }
       }
Второй будет несколько быстрее первого или нет?
 
Второй быстрее, но разницы Вы не заметите. :)
А если сделаете еще одну переменную double PointXTS=Point*TrailingStop и потом будете её тыкать во все места, тогда будет еще быстрее. Но этого тоже не заметите. :)

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

Да конечно вы совершенно правы ))) Я вот только буквально дней десять назад как познакомился с mql да и вообще с программированием. Почитал Статейки по этому делу... Справку в МетоЕдиторе... Поэтому мне все эти нюансы интсересно знать даже просто с теоритической точки зрения... )))

И... спасибо за участие )

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