Файл или массив?

 

Доброго времени суток, у меня вопрос...
Есть необходимость записать 100тыс. чисел double, числа будут ежесуточно удалятся и записываться заново. Как это лучше сделать, писать в файл или в массив? При работе эти числа используются экспертом только раз в сутки. Если писать в файл то как это отразится на скорости тестирования и оптимизации, и вообще использует ли тестер записанные экспертом файлы при тестировании? Если писать в массив - есть ли какие-то ограничения на его размер?

Спасибо.

 
Думаю, хранить в массиве будет экономичнее (будет занята память, но меньше нагрузки на проц и винчестер). По крайней мере, при тестировании.
А для реальной работы, наверное, лучше писАть в файл - и память будет свободна, и при сбое информация не потеряется.
 
Думаю, раз в сутки записать в файл не слишком вычислительно накладно. Если опер. памяти хватает, и машина стоит на хорошем UPS'e, можете рискнуть держать массив в памяти.
 
chv:
Думаю, раз в сутки записать в файл не слишком вычислительно накладно. Если опер. памяти хватает, и машина стоит на хорошем UPS'e, можете рискнуть держать массив в памяти.
Для тестера (и оптимизатора) это "раз в сутки" будет наступать несколько раз в секунду.
А для реала в любом случае лучше в файл - на одном эксперте не заметно, а на десятке почувствуется.
 

Буду писать в массив, был не уверен что в него можно записать 100тыс чисел. Мне нужно тики писать за последние сутки для встроенного оптимизатора, в начале следующих суток несколько проходов, затем тики удаляются и пишутся заново. UPS пол часа держит, в принципе за год около трех отключений по вине электричества.

Спасибо.

 
komposter:
Для тестера (и оптимизатора) это "раз в сутки" будет наступать несколько раз в секунду.

Хорошее замечание, Андрей, я упустил это из виду. Когда у меня терминалы молотят сутками переборы в SQL базу, о файловой оптимизации поневоле задумаешься. Жаль, терминал не позволяет отключить логирование совсем :(, у него три папки logs, если не удалять их скриптами, за пару дней они съедают 20-30 Гб.

А к текущему вопросу топика можно, например, так:

if(IsTesting())
{
  // test mode: use array in memory
}
else
{
   // real-time mode: write array to file
}
 
А ни кто не в курсе какое максимальное количество элементов массива можно создать? или ограничено размерностью типа инт?
 
Dikii:
А ни кто не в курсе какое максимальное количество элементов массива можно создать? или ограничено размерностью типа инт?
если память не изменяет то не более 100 миллионов единиц. по заглаза должно хватить
 
Dikii:
А ни кто не в курсе какое максимальное количество элементов массива можно создать? или ограничено размерностью типа инт?
Ограниченно размером адресуемой памяти для 32-х разрядного приложения. В ОС х32 от 2 Гб до 4 Гб (в зависимости от настроек ОС). В ОС х64 - 4 Гб.
 
Zhunko :
Ограниченно размером адресуемой памяти для 32-х разрядного приложения. В ОС х32 от 2 Гб до 4 Гб (в зависимости от настроек ОС). В ОС х64 - 4 Гб.


Спасибо огромное

А то я скриптик уже поставил и он у меня 8 млн уже дошел в течении 6 суток все никак не исполнится

код:

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"



//+------------------------------------------------------------------+

//| script program start function |

//+------------------------------------------------------------------+

int i;

int mas[];



int start()

{

//----

for(i=0;i>=0;i++){

if (GetLastError()!=0){

return;

}

ArrayResize(mas,i+1);

mas[i]=i;

if(mas[i]!=i){

return;

}

Print(mas[i]);

}

//----

return(0);

}

//+---------------
Причина обращения: