Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 33

 
Alexey Kozitsyn:

Оу... А... сколько выполняется расчет тика советника не замеряли?

Советник используется в режиме "Математические вычисления" - суть в проверке каждого такого правила на таблице данных и подсчет статистики - одно правило примерно за секунду вычисляется, но это из-за инициализации не быстрой, поэтому я их в цикле гоняю и фреймы собираю за одни проход 1000 штук - так скорость возрастает до 10 раз.

 
fxsaber:

Инлайн не пашет?

Инлайн наоборот увеличивает объем анализируемой портянки, так как встраиваемая функция полностью переносится в тело вызывающего блока.

У нас агрессивный инлайнинг ради ускорения. Без инлайнинга вообще об оптимизаторе кода говорить нельзя.

 
Aleksey Vyazmikin:

В МЕ теперь показывается прогресс компиляции в процентах - порадовало, спасибо, а то у меня есть советник, компенсирующийся более 3 часов и очень хотелось понимать, сколько ещё ждать его компиляцию.

Раз появляются новые функции для работы с массивом, то быть можно как то реализовать быструю функцию на удаление всех не уникальных значений в массиве, в том числе содержащие строки?

Предоставьте мне свой код для проверки "тормозов" в оптимизаторе компилятора.

Можно через ЛС.

 
fxsaber:

Инлайн не пашет?

Инлайн ускоряет выполнение, а речь была о тормозах в процессе компиляции. В принципе, компиляция существенно замедлилась (по моим замерам - в 3 раза), начиная с некоторого времени. Что-то произошло после 1881 билда.

 
Stanislav Korotky:

Инлайн ускоряет выполнение, а речь была о тормозах в процессе компиляции. В принципе, компиляция существенно замедлилась (по моим замерам - в 3 раза), начиная с некоторого времени. Что-то произошло после 1881 билда.


заметил тормоза компиляции при использовании рисования (граф объектов)

 
Ilyas:

Предоставьте мне свой код для проверки "тормозов" в оптимизаторе компилятора.

Можно через ЛС.

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

Запустил компиляцию без вырезаний, и прошло 99% и процесс стоит на одном месте.

Поэтому, видимо дело не в IFках.

Код отправил в личку.
 
Aleksey Vyazmikin:

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

Запустил компиляцию без вырезаний, и прошло 99% и процесс стоит на одном месте.

Поэтому, видимо дело не в IFках.

Код отправил в личку.

Спасибо за сообщение и предоставленный код.

"Тормоза" в оптимизаторе компилятора связаны с огромными по телу циклами, фактически весь код файла - это один большой цикл.

Я подумаю как можно обойти большие циклы более экономично.

В текущем билде сделайте вот что.

Функцию в большим циклом Вам надо немного изменить

double FuncWithBigLoop( )
  {
   for(int pass=pass_start; pass<pass_stop; pass++)
     {
      LoopPass(pass);
     }

   return(0);
  }

void LoopPass(int pass)
  {
   //--- Big code
  }

Такой финт исключит "тормозную" оптимизацию цикла, что значительно ускорит компиляцию

 
Ilyas:

Спасибо за сообщение и предоставленный код.

...

Такой финт исключит "тормозную" оптимизацию цикла, что значительно ускорит компиляцию

Так это тоже самое, только плюс ещё функция.

Я стараюсь избегать такие конструкции, а оказывается что иногда это полезно!?

 
Vitaly Muzichenko:

Так это тоже самое, только плюс ещё функция.

Я стараюсь избегать такие конструкции, а оказывается что иногда это полезно!?

Так и глазам приятней. Если цикл растянут на пару страниц по высоте монитора, то замучаешься искать где он заканчивается, а свернуть нет возможности. Вот такими методами и выкручиваемся. А оказывается ещё и компилируется пошустрей. Приятно.
 
Ilyas:

Спасибо за сообщение и предоставленный код.

"Тормоза" в оптимизаторе компилятора связаны с огромными по телу циклами, фактически весь код файла - это один большой цикл.

Я подумаю как можно обойти большие циклы более экономично.

В текущем билде сделайте вот что.

Функцию в большим циклом Вам надо немного изменить

Такой финт исключит "тормозную" оптимизацию цикла, что значительно ускорит компиляцию

Спасибо! Действительно, так компилируется более чем в 10 раз быстрее. А на скорости исполнения кода это не отразится негативно?