Артефакты MQL5 - страница 3

 
DC2008:

Да я понял, что Вас это не интересует.

=== 

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

Обратите внимание на то, что в тестере больше влияние имеют состояние кешей и поднятых данных, чем MQL5 код.

То есть, внутреннее состояние кешей тестера очень сильно влияет на результат. Чтобы невелировать их влияние, нужно проводить множественные повторяющиеся тесты с усреднением результатов.

 
avoitenko:

... Давайте найдем настоящий артефакт, который будет интересно тестировать, так как этот пример уже не интересен. 

 Мало обнаружить артефакт, надо разобраться почему так получается. Подожду правильного ответа .

 
Renat:

Обратите внимание на то, что в тестере больше влияние имеют состояние кешей и поднятых данных, чем MQL5 код.

То есть, внутреннее состояние кешей тестера очень сильно влияет на результат. Чтобы невелировать их влияние, нужно проводить множественные повторяющиеся тесты с усреднением результатов.

Всё что Вы говорите понятно, я весь вечер гонял тесты и так и эдак: перезагружал терминал, перезапускал компьютер, включал и выключал свет в комнате и т.п :). Но нашёл причину разных скоростей исполнения. Пусть это останется задачкой для проверки знаний по MQL5.

 
DC2008:

Да я понял, что Вас это не интересует.

=== 

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

Так покажите существенную разницу. Даже Ваши тесты показывают, что разница незначительная и может быть как в плюс, так и в минус. 
 

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

 Характеристика Тест 1 Тест 2 Разница в % 
 Размер скомпилированного кода 4804 4632 3,7
 Среднее время исполнения кода на участке исторических данных (М1, EURUSD, все тики) 104442 97885 6,7

 

ВЫВОД (для рассмотренных тестов): Чем меньше размер скомпилированного файла, тем быстрее он исполняется (в большинстве случаев это очевидно).

Теперь, немного изменим описание в разделе данных исследованных тестов:

Тест 3 Тест 4
#define ARRMAX     10000
struct arr
  {
   datetime          t;
   double            y1;
   double            y2;
   double            y3;
   double            y4;
  };
arr         arrstr[];
datetime    arrdat[];
#define ARRMAX     10000
struct arr
  {
   datetime          t;
   double            y1;
   double            y2;
   double            y3;
   double            y4;
  };
arr         arrstr[];
datetime    arrdat[];

т.е. изменена очерёдность перечисления элементов структуры. Переменная типа datetime перемещена на первую позицию.

Протестируем и эти варианты:

Характеристика Тест 3 Тест 4 Разница в %
Размер скомпилированного кода 5134 4846 5,9
Среднее время исполнения кода на участке исторических данных (М1, EURUSD, все тики) 113922 106039 7,4

 

Выводы делайте сами... 

Рекомендую тщательно проектировать структуры и возможно классы, поскольку это может увеличить (или снизить) быстродействие ваших программ. Про это написано в справке. Кроме того, если используется много циклов, то первыми размещайте те, у которых перебираются элементы структур или классов. Не факт, что это сработает, но проверить следует: поэкспериментируйте и сравните время исполнения.

 
DC2008:

Рекомендую тщательно проектировать структуры и возможно классы, поскольку это может увеличить (или снизить) быстродействие ваших программ.

к сожалению только разработчики компилятора знают как надо проектировать классы и структуры и алгоритмы вообще, чтоб код EX5 становился оптимальным по итогу.

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

По словам Рената - инлайнится вообще все что можно инлайнить и даже больше (этот эффект можно видеть в профилировании, что создает непонятности второго рода - превышение 100%)


В общем откомпилируйте свои коды повторно и увидите что их объем снова изменился и скорость теста возможно тоже.

 
Интересно, а от коментариев, которые содержатся в експерте сильно ли увеличивается время теста, просто вставить текст статьи какой-нибудь в эксперт и посмотреьб насколько коментарии на 10000 символов к примеру загрузят ПК
 
lazarev-d-m:
Интересно, а от коментариев, которые содержатся в експерте сильно ли увеличивается время теста, просто вставить текст статьи какой-нибудь в эксперт и посмотреьб насколько коментарии на 10000 символов к примеру загрузят ПК

коментарии какие?

//

/* */

Comment

?

тест может увеличить только Comment, так как работает со строками

первые два - ваще никак

 
От размера ex5 скорость программы не зависит, так как код один и тот же, а разница размера только в протекторе.