Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Какой максимальный размер массива


Автор: tyro 4.10.2010, 12:24
 Вопрос: Visual Studio 2010 устанавливается на Windows7 x64. Каков максимальный размер массива (индекса)?

Автор: jonie 4.10.2010, 18:46
индексируется int-ом, sizeof(int) в .NET 32 бита, знаковы, значит теоретически (2^32)/2-1 элементов...  на практике думаю меньше...

Автор: tyro 4.10.2010, 20:45
Цитата(jonie @ 4.10.2010,  18:46)
индексируется int-ом, sizeof(int) в .NET 32 бита,

Спасибо. А С++? (Собственно нужно что бы было больше 2 Гиг, из-за этого и предполагается платформа х64. Может какой другой язык?).

Автор: Sartorius 4.10.2010, 20:52
tyro, зачем, если не секрет, такие здоровые массивы? Да и не на каждой машине 2 гига есть. Возможно вы выбрали не лучшее решение своей задачи  smile 

Автор: tyro 4.10.2010, 22:20
Цитата(Sartorius @ 4.10.2010,  20:52)
tyro, зачем, если не секрет, такие здоровые массивы? Да и не на каждой машине 2 гига есть. Возможно вы выбрали не лучшее решение своей задачи  smile

Гигов там много. Решение, конечно не лучшее. Есть несколько датчиков, с которых параллельно (синхронно) льется информация. Сейчас она нарезается  в файлы по 50 мегов и анализируется. В случае "не штатной ситуации", обнаруженной в начале файла, "Хвост" предыдущего файла  и "Начало" текущего сращиваются для анализа предыстории и последствий. В настоящий момент максимальный размер данных (индекс) с одного датчика не превышает 3 Гигов, но планируется увеличение . Хотелось  без сращивания "хвостов" и "начал".

Автор: mrbrooks 5.10.2010, 08:09
Сохраняйте срез данных в единицу времени в БД. Не надо ни каких массивов аццких размеров. 

Автор: tyro 5.10.2010, 08:31
Цитата(mrbrooks @ 5.10.2010,  08:09)
Сохраняйте срез данных в единицу времени в БД. Не надо ни каких массивов аццких размеров.

Если я правильно понял, Вы предлагаете "заливать" поток данных с датчиков в БД?

Автор: jonie 5.10.2010, 09:04
Цитата(tyro @  4.10.2010,  21:45 Найти цитируемый пост)

Спасибо. А С++? (Собственно нужно что бы было больше 2 Гиг, из-за этого и предполагается платформа х64. Может какой другой язык?). 

в 64 битном с++ теоретически (2^64)/2-1 байт способно индексироваться... но в винде например менеджер VM размещает хитро блоки ... надо читать в общем... Лично я наблюдал как SQL Server от страшного запроса на базе около 6 ТБ сжирал около 58 гиг памяти...

Автор: mrbrooks 5.10.2010, 10:04
Цитата(tyro @  5.10.2010,  09:31 Найти цитируемый пост)
Если я правильно понял, Вы предлагаете "заливать" поток данных с датчиков в БД? 

в идеале да. но тут стоит уточнить несколько моментов. и один из самых важных из них - с каким интервалом времени вы их опрашиваете.

Автор: tyro 5.10.2010, 10:29
Цитата(mrbrooks @  5.10.2010,  10:04 Найти цитируемый пост)
в идеале да. но тут стоит уточнить несколько моментов. и один из самых важных из них - с каким интервалом времени вы их опрашиваете

Может это и хорошая идея, но в силу организационных обстоятельств трудно выполнимая - Испытательный стенд с системой сбора информации принадлежит одной организации, а результаты - другой, и менять формат отчетности вряд ли согласятся. Тем более, что:
Цитата(jonie @  5.10.2010,  09:04 Найти цитируемый пост)
в 64 битном с++ теоретически (2^64)/2-1 байт способно индексироваться...

позволяет решить задачу "в лоб", пусть и не "элегантно", но на проверенном алгоритме.
Большое СПАСИБО всем принявшим участие в обсуждении.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)