Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Какая максимальная длина массива? Добавлено: 08.09.04 07:54  

Автор вопроса:  Born | ICQ: 178155071 
Мне нужно создать 2-х мерный массив
M(100000,100000) выдает ошибку Out of memmory
Что делать?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 RotesByte



Вопросов: 11
Ответов: 69
 Web-сайт: koch.onestop.net
 Профиль | | #1
Добавлено: 08.09.04 12:23
Ну ты и жадный!!! Ты заказываешь 10 в 10-й степени элементов...

А 4 массива arrMSmall(50000) помогут?
Или 16 массивов arrMSmall(25000) ?

Кстати, все эти "маленькие" массивы можно засунуть в один "большой" массив:

Private Sub Command1_Click()
    'Dim arrTest(100000, 100000) As Integer
    
    ;Dim arrBig(2, 2) As Variant
    ;Dim arrSmall0(5000000) As Integer
    ;Dim arrSmall1(5000000) As Integer
    ;Dim arrSmall2(5000000) As Integer
    ;Dim 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-сайт: koch.onestop.net
 Профиль | | #2
Добавлено: 08.09.04 12:51
Извини, ошибся. Надо было писать
А 4 массива arrMSmall(50000, 50000) помогут?
Или 16 массивов arrMSmall(25000, 25000) ?

Тогда программа будет выглядеть:

Private Sub Command1_Click()
    'Dim arrTest(100000, 100000) As Integer
     
    ;Dim arrBig(2, 2) As Variant
    ;Dim arrSmall0(50000, 50000) As Integer
    ;Dim arrSmall1(50000, 50000) As Integer
    ;Dim arrSmall2(50000, 50000) As Integer
    ;Dim 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-сайт: koch.onestop.net
 Профиль | | #3
Добавлено: 08.09.04 12:53
arrSmall0(5000, 5000)

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: koch.onestop.net
 Профиль | | #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-сайт: koch.onestop.net
 Профиль | | #10
Добавлено: 12.09.04 16:20
2 alexis_b:
Ну и я о том же...

2 Born:

Что-то я в условия задачи не особо врубился (про таблицы и связи). Такое впечатление, что у вас там просто проблема с нормализацией.

Если есть настроение - объясни мне мылом подробнее + структуру таблиц, ключи, связи.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам