![]() |
|
Модераторы: Akina |
![]()
|
|
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
В проекте есть функция, рассчёт которой 100% занимает огромное время. Решил затабулировать (раз вычислить, а потом обращаться к массиву готовых значений). Вот так:
При компиляции возникает ошибка "Out of memory". Как изменить код, чтобы он работал? Это сообщение отредактировал(а) ProgramerForever - 20.6.2009, 00:35 |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Не использовать столь многомерный массив!
Произвести рассчет с сохранением данных в файл и впоследствии читать из него. -------------------- Я желаю всем Счастья! |
|||
|
||||
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
А стоит ли игра свеч? Не проще ли будет вычислять наше первоначальное
Чем вычислять смещение в файле, чтение из самого файла, а потом ещё и преобразование в число? Это сообщение отредактировал(а) ProgramerForever - 20.6.2009, 00:33 |
|||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: нет Всего: 7 |
ProgramerForever, не проще.
|
|||
|
||||
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Хмм.. Понятно. Как теперь организовать максимальную скорость чтения из файла?
Насколько я понимаю, данные должны лежать сплошным потоком, но каждая ячейка фиксированого размера. Как получить строчку фиксированного размера? |
|||
|
||||
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Что-то я подумал, посчитал.. При таком размере (32^6) массива каждый байт в поле записи выливается в гигабайт на диске. Так что не очень выгодно. Да и читать файл в несколько гиг в цикле - это медленно. ИМХО, конечно.
|
|||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: нет Всего: 7 |
Попробуй СУБД какую-нить использовать
Добавлено через 2 минуты и 57 секунд И вообще лучше по определённому запросу делать вычисления, да будет подтромаживать во время вычисления, зато ты лишишься гемора с хранением. Но даже БД будет весить много, конечно по быстрее чем с файлом работать. Опять же гемор с БД. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну кто-то вообще хотел это в память затолкать, помнится. А вообще я не могу понять необходимости составления такой таблицы. Что за задача? Почему нельзя вычислять требуемые расстояния непосредственно в момент, когда они нужны? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Это функция для рассчёта длины вектора по 6ти координатам. Тут квадраты, корень квадратный есть. По-моему, это медленно. Вот я и подумал замутить табличку. Обращение к готовому массиву будет идти быстрее, чем вычисление. Но не данном случае
А всё-таки, какой максимальный размер массива? Это сообщение отредактировал(а) ProgramerForever - 21.6.2009, 07:25 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
не более 32 измерений, кажется... во всяком случае 24 измерения точно допустимы. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ProgramerForever |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Это размерность массива?
Так? А по размеру? В байтах. Это сообщение отредактировал(а) ProgramerForever - 21.6.2009, 12:17 |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Отталкиваясь от первоначального поста, предположу что он ограничем количеством свободной оперативной памяти. -------------------- Я желаю всем Счастья! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Нет, количеством доступной приложению виртуальной памяти, т.е. около 2 Гб.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |