Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 35

 
Не знаю, как в MQL4, но, когда проводил гонки на С++, то обратил внимание, что тот код, который запускаешь первым работает медленней, чем второй. Наверняка, на первичное выделение памяти уходит время. Обычно на 5% медленнее.
 
double H_global[1000],L_global[1000];
int start(){
   int i,j,start_local,start_global,GetTick_local,GetTick_global;
   double H_local[1000],L_local[1000];
   start_local=GetTickCount();
   for(j=0;j<10000;j++)
      for(i=0;i<1000;i++){
         H_local[i] = High[i];
         L_local[i] = Low[i];
      }
   GetTick_local = GetTickCount();
//---------------------
   start_global=GetTickCount();
   for(j=0;j<10000;j++)
      for(i=0;i<1000;i++){
         H_global[i] = High[i];
         L_global[i] = Low[i];
      }
   GetTick_global = GetTickCount();
//---------------------   
   Print("локальный массив: " , GetTick_local-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTick_global-start_global, " миллисекунд.");
return(0);
}

в логе:

2012.03.23 13:40:50 test EURUSD,H1: глобальный массив: 1406 миллисекунд.

2012.03.23 13:40:50 test EURUSD,H1: локальный массив: 1344 миллисекунд.

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

 
IgorM:

в логе:

2012.03.23 13:40:50 test EURUSD,H1: глобальный массив: 1406 миллисекунд.

2012.03.23 13:40:50 test EURUSD,H1: локальный массив: 1344 миллисекунд.

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

Наверно, если их поменять местами, результаты остануться на месте.
 
Zhunko:Наверно, если их поменять местами, результаты остануться на месте.

поменял, и скопировал start() в func(), после Printов запуск func() :

2012.03.23 14:11:15 test EURUSD,H1: локальный массив: 1313 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: глобальный массив: 1359 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: вызов ф-ции.....

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, локальный массив: 1312 миллисекунд.

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, глобальный массив: 1328 миллисекунд.




 
IgorM:

поменял, и скопировал start() в func(), после Printов запуск func() :

2012.03.23 14:11:15 test EURUSD,H1: локальный массив: 1313 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: глобальный массив: 1359 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: вызов ф-ции.....

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, локальный массив: 1312 миллисекунд.

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, глобальный массив: 1328 миллисекунд.

Поменял местами глобальный и локальный? Сейчас сначала локальный, потом глобальный. Надо наоборот.
 
IgorM:

поменял, и скопировал start() в func(), после Printов запуск func() :

2012.03.23 14:11:15 test EURUSD,H1: локальный массив: 1313 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: глобальный массив: 1359 миллисекунд.

2012.03.23 14:11:15 test EURUSD,H1: вызов ф-ции.....

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, локальный массив: 1312 миллисекунд.

2012.03.23 14:11:18 test EURUSD,H1: ф-ция, глобальный массив: 1328 миллисекунд.

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

так и сделал, но результаты не изменились, и в отдельной ф-ции тож массив объявил, вызвал ф-ицю и сравнил с вызовом глобального массива

alsu, вполне логичное предположение, но мои эксперименты привели меня к забавной мысли: mql4 для ламеров, как удобно так и объявляй, как говорится по ходу пьесы.. ))). Может быть на mql5 проведу эксперименты если не забуду, да и как раз там производительность МТ5 обсуждается, может быть чего прояснится

 

случаем никто не занимался портированием на mql FANN? http://leenissen.dk/fann/wp/download/, или аналогичный код на mql с НС

ЗЫ: поиском и гуглом чёт не найду готовую НС, .dll с FANN подключал, довольно уверенно работает, но хотелось бы без .dll

 
IgorM:

случаем никто не занимался портированием на mql FANN? http://leenissen.dk/fann/wp/download/, или аналогичный код на mql с НС

ЗЫ: поиском и гуглом чёт не найду готовую НС, .dll с FANN подключал, довольно уверенно работает, но хотелось бы без .dll


Обучать сеть лучше в специализированном софте. Быстрее значительно. А использовать лучше в коде
 
Vinin:Обучать сеть лучше в специализированном софте. Быстрее значительно. А использовать лучше в коде
это то все понятно, но очень нужно и ... и вот хочется себе в эксперт автооптимизатор сделать, да так чтобы без .dll :)
Причина обращения: