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

 
Heroix:
Объясните, что значит . t, его смысл?

Мне нужно было сделать выбор: использовать простые массивы или структурные. Для этого проверил их быстродействие и обнаружил сей артефакт. 

 

 
Renat:16 мс - граница точности GetTickCount. То есть, замерять разницу во времени в пределах 32 мс нельзя из-за диких погрешностей.
спасибо! полезная информация, в принципе я подозревал что то похожее, добавьте эту информацию в справку,  думаю будет полезно знать
 
IgorM:

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

ЗЫ: разница в 16 мс несерьезно как то 

Да, тогда всё верно (в смысле второй вариант быстрее). Вот такой результат теперь:

 

 
DC2008:

Так код же приведён в таблице. Пропускаете в тестере, хотя бы за неделю, на всех тиках.

В вашем коде нет подсчета времени выполнения теста.

Давайте добавим:

long time_saved;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   time_saved = GetTickCount();
   ArrayResize(arrstr,ARRMAX,ARRMAX);
   ArrayResize(arrdat,ARRMAX,ARRMAX);
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  Print(GetTickCount()-time_saved);
  }

Мои результаты трех последних тестов на M1 за неделю на EURUSD:

T1
T2
43196
42588
43119
42635
43056
42651

 

Разница: 1.4 %

Файлы:
T1.mq5  2 kb
T2.mq5  3 kb
 

Достаточно передвинуть всего одну строчку в коде у каждого варианта и скорость сравняется, правда не в пользу второго варианта.

 

 
avoitenko:

В вашем коде нет подсчета времени выполнения теста. 

 Время очень хорошо считает тестер!

 
DC2008:

 Время очень хорошо считает тестер!

Время чего он считает? Рассмотрите логи, увидьте, что тестер делат от момента нажатия на кнопку "Старт" до окончания тестирования
 
DC2008:

 Время очень хорошо считает тестер!

А кто вам это сказал?

Вот лог:

2012.12.22 19:27:06 Core 1 EURUSD,M1: 265176 ticks (7141 bars) generated within 43103 ms (total bars in history 732837, total time 43212 ms)
2012.12.22 19:27:06 Core 1 2012.12.21 23:59:59 42588

Разница в пределах 0.6 секунды, причем она плавающая.

Я засекаю от Init до Deinit отбрасывая время инициализации самого тестера.

В общем никаких ваших 6%, максимум 1.5%.

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

 
Integer:
Время чего он считает? Рассмотрите логи, увидьте, что тестер делат от момента нажатия на кнопку "Старт" до окончания тестирования. 

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

=== 

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