Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересует заработок в MQL5 Cloud Network? Загляни в профиль!
Павел
97
Павел 2015.02.13 06:15 

Всем привет.

В обновлённой версии языка для 4 версии увидел, что добавилась новая переменная в этой функции: // резервное значение размера (избыточное).

По работе скрипта понял, что работает действительно быстрее, но почему и как - не понял. 

Вот кусок кода из примера в документации:

 Вторая строчка - это уже присвоение массиву размера сразу в 100 000 элементов, а потом в цикле уже опять установление размера = i  ?

 

   double arr[];
   ArrayResize(arr,100000,100000);
//--- проверим, как быстро работает вариант с резервированием памяти 
   Print("--- Test Fast: ArrayResize(arr,100000,100000)");
   for(int i=1;i<=600000;i++)
     {
      //--- задаем новый размер массива с указанием резерва в 100000 элементов!
      ArrayResize(arr,i,100000);
      //--- при достижении круглой цифры выводим размер массива и затраченное время
      if(ArraySize(arr)%100000==0)
        {
         now=GetTickCount();
         count++;
         PrintFormat("%d. ArraySize(arr)=%d Time=%d ms",count,ArraySize(arr),(now-start));
         start=now; 
        }
     }

 Если вторую строчку представить как 

ArrayResize(arr,1,100000);

Это будет правильно или нет? 

 

Объясните, пожалуйста, на пальцах , как правильно пользоваться этим третьим параметром.

Допустим, я не знаю, до какого размера у меня вырастет массив, знаю ориентировочно, что , допустим, до 1 млн. И расти он будет поэлементно: появилось новое значение - увеличиваем массив на 1, заносим значение. Какое значение лучше поставить в этом случае для резервного значения размера? 1 000, 10 000,  100 000, 1 000 000  ?  Как от этого будет меняться скорость работы?

Как правильно писать код: в инициализации указать  

ArrayResize(arr,100000,100000);

и потом уже в теле советника менять размер массива от 1 до 1млн?

 ArrayResize(arr,1,100000);

ArrayResize(arr,1 000 000,100000); 

 

Или какие-то другие варианты?

 

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

 

Спасибо за ответы. 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий