Страница: 1 |
Страница: 1 |
Вопрос: Какая максимальная длина массива?
Добавлено: 08.09.04 07:54
Автор вопроса: Born | ICQ: 178155071
Мне нужно создать 2-х мерный массив
M(100000,100000) выдает ошибку Out of memmory
Что делать?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #1
Добавлено: 08.09.04 12:23
Ну ты и жадный!!! Ты заказываешь 10 в 10-й степени элементов...
А 4 массива arrMSmall(50000) помогут?
Или 16 массивов arrMSmall(25000) ?
Кстати, все эти "маленькие" массивы можно засунуть в один "большой" массив:
Private Sub Command1_Click()
'Dim arrTest(100000, 100000) As Integer
 im arrBig(2, 2) As Variant
 im arrSmall0(5000000) As Integer
 im arrSmall1(5000000) As Integer
 im arrSmall2(5000000) As Integer
 im arrSmall3(5000000) As Integer
arrBig(0, 0) = arrSmall0
arrBig(0, 1) = arrSmall1
arrBig(1, 0) = arrSmall2
arrBig(1, 1) = arrSmall3
arrBig(0, 1)(1) = 12
MsgBox arrBig(0, 1)(1)
End Sub
У меня это работает.
Успехов!
Номер ответа: 2
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #2
Добавлено: 08.09.04 12:51
Извини, ошибся. Надо было писать
А 4 массива arrMSmall(50000, 50000) помогут?
Или 16 массивов arrMSmall(25000, 25000) ?
Тогда программа будет выглядеть:
Private Sub Command1_Click()
'Dim arrTest(100000, 100000) As Integer
 im arrBig(2, 2) As Variant
 im arrSmall0(50000, 50000) As Integer
 im arrSmall1(50000, 50000) As Integer
 im arrSmall2(50000, 50000) As Integer
 im arrSmall3(50000, 50000) As Integer
arrBig(0, 0) = arrSmall0
arrBig(0, 1) = arrSmall1
arrBig(1, 0) = arrSmall2
arrBig(1, 1) = arrSmall3
arrBig(0, 1)(1, 1) = 12
MsgBox arrBig(0, 1)(1, 1)
End Sub
Тоже вылетает...
Вариант arrSmall0(50000, 50000) еще проходит, но больше - нет.
Номер ответа: 3
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #3
Добавлено: 08.09.04 12:53
arrSmall0(5000, 5000)
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 08.09.04 13:10
Э... ну... это почти 10Гб... Это при том если ты будешь использовать байтовый массив, если целочисленный, умножай на 2, если Лонг типа, умножай на 4, если Дабле, или что подобное - умножай на 8
Вообще процессу положено юзать 4Гб памяти и только 2Гб можешь использовать ты для своих данных... Хотя нет, ошибся, ты сможешь использовать 3Гб памяти, но это только при условии использования какого-то там ключа для компилятора...
Если ты работаешь с большими файлами, то тебе предлагается использовать FileMapping...
В общем так просто ты такой нехилый массив не создашь...
Номер ответа: 5
Автор ответа:
alexis_b
ICQ: 232969505
Вопросов: 10
Ответов: 74
Профиль | | #5
Добавлено: 08.09.04 14:47
Можно попробовать юзать табличку в БД. Дольше конечно и геморойней доступ к элементам но зато не будет проблем с памятью.
Номер ответа: 6
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #6
Добавлено: 10.09.04 02:46
А какая такая модная БД поддержит столько полей в таблице?
Номер ответа: 7
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #7
Добавлено: 10.09.04 04:10
Есть тут одна база, но мня интересует в ней 2 таблицы в одной 25000 записей там детали, изделия, сб.ед...
а другая соответствия.. допустим деталь ID_parent=1 и сборочноая.ед. id_unit=7 и количетсво это детали в сборочной ед. так в этой таблице 110000 записей.. Вот мне надо определить каждую деталь и в какое изделие оно входит.. а прямой связи нет вхождения детали в изделие надо просчитывать перебором.. и складывать количество..
Короче я сделал рекурсивную функцию.. но по моим подсчетам она будет работать 75 дней это много..
Номер ответа: 8
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #8
Добавлено: 10.09.04 04:13
вот я и думал загнать эту таблицу в матрицу где номер строки будет id_parent а номер столбца Id_unit, ну а значение количество, оказалась не так просто..вот с 6 сентября машина круглосуточно работает и только 692 детали из 10000 обработала..гемор сплошняком..
Номер ответа: 9
Автор ответа:
alexis_b
ICQ: 232969505
Вопросов: 10
Ответов: 74
Профиль | | #9
Добавлено: 10.09.04 09:14
ну дык надо тода сделать таблицу вхождений один раз просчитать а потом из нее выборки делать, а при добавлении сборки сразу делать пометки и в новой таблице.
4RotesByte: А никому такая таблица и не нужна (с таким количеством полей) т.к. выборка из нее будет не то что очень долгой а просто вечной!
Номер ответа: 10
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #10
Добавлено: 12.09.04 16:20
2 alexis_b:
Ну и я о том же...
2 Born:
Что-то я в условия задачи не особо врубился (про таблицы и связи). Такое впечатление, что у вас там просто проблема с нормализацией.
Если есть настроение - объясни мне мылом подробнее + структуру таблиц, ключи, связи.