Числа
Кто знает как можно в Buildere организовать работу с массивами, точнее скажем с последовательностью чисел порядок которой, например 10^8. При этом необходимо производить математические действия над этими числами.
Если выделять под такой массив память, то комп начинает загибаться. Можно записывать эти числа в файл и работать с ними от туда. Может кто подскажет как лучше.
Спасибо
Все-таки не должен загнуться-то комп...
А если мутить с файлом, то тогда отображай его на память - неплохо получается...И индексирование удобное (как в массиве). Например:
HANDLE hf = CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
if (hf == INVALID_HANDLE_VALUE) return NULL;
HANDLE hm = CreateFileMapping(hf, NULL, PAGE_READONLY, 0, 0, NULL);
if (!hm) return NULL;
LPVOID pf = MapViewOfFile(hm, FILE_MAP_READ, 0, 0, 0);
if (!pf) return NULL;
Доброе время суток!
Кто знает как можно в Buildere организовать работу с массивами, точнее скажем с последовательностью чисел порядок которой, например 10^8. При этом необходимо производить математические действия над этими числами.
Если выделять под такой массив память, то комп начинает загибаться. Можно записывать эти числа в файл и работать с ними от туда. Может кто подскажет как лучше.
Спасибо
Ты уверен, что тебе нужны такие объемы?
Может приведешь пример использования?
Ты уверен, что тебе нужны такие объемы?
Может приведешь пример использования?
Примеров куча. Например коррекция полёта крылатых ракет по рельефу местности, расчёт ущерба от массированного удара и т.п.
Ты уверен, что тебе нужны такие объемы?
Может приведешь пример использования?
Скажем так это мне необходимо для конкретной цели. Я провожу анализ 128 битных генераторов псевдослучайных чисел и для того чтобы их полностью проверить или скажем более менее корректной проверки. Числа 128 битные генерятся все нормально, а вот скажем если, например, ставишь ему 10^8 и больше то комп уходит в нирвану и от туда уже не возвращается. Вот поэтому я и думаю как лучше организовать работу.
Если под "порядком последовательности" понимается число ее элементов (пусть типа int) и это дело тянет на 380Мб, то, наверное, стоит попробовать upgrade до 2Gb и работать в динамической памяти...
Все-таки не должен загнуться-то комп...
А если мутить с файлом, то тогда отображай его на память - неплохо получается...И индексирование удобное (как в массиве). Например:
HANDLE hf = CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
if (hf == INVALID_HANDLE_VALUE) return NULL;
HANDLE hm = CreateFileMapping(hf, NULL, PAGE_READONLY, 0, 0, NULL);
if (!hm) return NULL;
LPVOID pf = MapViewOfFile(hm, FILE_MAP_READ, 0, 0, 0);
if (!pf) return NULL;
Если можно то поконкретнее, а то что то я в тему не въезжаю(знаю бывает и такое).))))))))
Примеров куча. Например коррекция полёта крылатых ракет по рельефу местности, расчёт ущерба от массированного удара и т.п.
Что-то я сомневаюсь, что расчет полета, а тем более коррекция полета крылатой ракеты занимает такой объем данных. На сколько знаю, программы там терминальные (т.е. постоянный расчет курса относительно текущей и конечной точки с учетом внешних факторов) и не опереруют огромными объемами информации в каждый конкретно взятый момент времени. Хотя, могу и ошибаться, т.к. дело имел только с РН и КА.
Про массированный удар тоже сомневаюсь, там формулы на страницу умещаются. Сам считал, когда учился.
А вот про моделирование ядерных процессов, это ДА. Там объемы офигительные.
Но я не про то, я про то, что большие объемы часто можно "размазать" по времени, или же бывает, что можно обойтись хешем.
Что-то я сомневаюсь, что расчет полета, а тем более коррекция полета крылатой ракеты занимает такой объем данных. На сколько знаю, программы там терминальные (т.е. постоянный расчет курса относительно текущей и конечной точки с учетом внешних факторов) и не опереруют огромными объемами информации в каждый конкретно взятый момент времени. Хотя, могу и ошибаться, т.к. дело имел только с РН и КА.
Про массированный удар тоже сомневаюсь, там формулы на страницу умещаются. Сам считал, когда учился.
А вот про моделирование ядерных процессов, это ДА. Там объемы офигительные.
Но я не про то, я про то, что большие объемы часто можно "размазать" по времени, или же бывает, что можно обойтись хешем.
Я имел ввиду не реальный процесс, а его моделирование. А про расчёт массированного удара - пройдись по карте США с шагом 5 км, вот и получишь массив мегов так 300. Методов оптимизации, позволяющих сократить расчёты для выбора оптимальной стратегии пока нет.
Что же касается ядерных процессов, то для их расчёта мощности ни одной персоналки в мире не хватит. Этим пытаются заниматься в Лос-Аламосе, но пока судя по всему безуспешно.
Если можно то поконкретнее, а то что то я в тему не въезжаю(знаю бывает и такое).))))))))
Что именно поконкретнее?
Если ты про map, то после вышеуказанной последовательности действий pf будет являться указателем на обычный байтовый массив, обращения к которому можно производить как обычно без всякого гемороя подобного fileseek или как там его.
Лекцию про файлы, отображаемые в память, посмотри в MSDN. Там есть про CreateFileMapping...