![]() |
|||||||||||
Как правильно работать с большими массивами?18.07.2017, 11:53. Показов 1723. Ответов 10
Метки нет Все метки)
(
Здоровый у меня массив. 30000 строк. И постоянно обновляется.
Я его постоянно очищаю
Может я что-то забыл сделать?
0
|
18.07.2017, 11:53 | |
Ответы с готовыми решениями:
10
Как работать с большими массивами больших чисел
Как оптимизировать работу с большими массивами изображений |
![]() |
|
18.07.2017, 23:29 [ТС] | |
нет. n в данном случае константна. определяется при загрузке формы и дальше не меняется. мало того вся систем работает 100-500 раз а потом умирает. Типа out of memory случается...
0
|
![]() |
||
18.07.2017, 23:59 | ||
В принципе-то я не в курсе, но, на примере темы SkyKing, предлагаю сбрасывать вот так:
1
|
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
|
19.07.2017, 03:16 | |
Возможно, такое происходит из-за фрагментации памяти (ОЗУ, а не дисковая подсистема). Обычно это решается (на С) изначальным резервированием достаточного размера пула памяти и затем его управлением. На VB инструменты для непосредственного манипулирования памятью отсутствуют, хотя, может быть, возможно это реализовать с помощью системных функций, но в любом случае, писать модуль управления распределением памяти штука не из самых простых. Вероятно есть другие пути решения этой проблемы или вообще, проблема заключается в другом, здесь лучше всего внимательно протестировать Вашу программу, проанализировать и подумать.
Добавлено через 5 минут Проверьте также программу на утечки памяти. Добавлено через 10 минут Если размеры массива не меняются, то можно поэкспериментировать со статическим массивом.
1
|
![]() |
|||
19.07.2017, 11:16 [ТС] | |||
Sasha_Smirnov, a чем Nothing отличается от Erase?
Добавлено через 47 секунд Добавлено через 2 минуты Этот массив вообще резиновый. Он является источником данных. но если массив, обрабатываемый по источнику данных, вдруг содержит новую, неизвестную источнику инфу, то эта инфа добавляется в массив-источник. Такая ботва: два массива друг друга учат и копят информацию.
0
|
![]() |
|
19.07.2017, 22:16 [ТС] | |
kalbasiatka, я не могу показать пример в файле. Попытка выделить проблему в отдельный файл - не удалась:проблема оказалась решенной
![]() Случайно залез в стек и узрел .. Но утечка памяти - на самом деле серьезная проблема, для которой, как я понял стандартных решений в VBA - кот наплакал.
0
|
![]() ![]() ![]() |
|||||
22.07.2017, 06:14 | |||||
В коде выше у вас присваиваются просто значения, даже не объект. *В некоторых случаях менеджер памяти не выделяет новый участок для копирования туда массива целиком. Это происходит, когда в конце массива есть достаточно non-committed страниц памяти, чтобы выделить там место для операции 'redim preserve' таким образом, чтобы данные массива располагались последовательно (не были разорваны). Вот здесь вообщем-то проводили тесты. Например, задать явный тип данных вместо Variant и заполнять массив на основе событийной схемы, чтобы данные параллельно записывались и в ячейки, и в массив. Все будет сильно зависеть от реализации программы. Это может снизить занимаемый объем, но замедлить работу.
0
|
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
|
22.07.2017, 07:03 | |
При выполнении erase для динамического массива происходит декремент ссылок членов массива, но это не гарантирует вызов деструктора для всех них, если учитывать, что ссылки на объекты были откуда-нибудь скопированы, например , с листа Ексель. И надо принимать во внимание, что программа интенсивно работает со строковыми данными, т.е. постоянно удаляет/добавляет их. Хотя, волне возможно (даже вероятнее всего), что в Екселе есть свой менеджер памяти и волноваться по этому поводу его пользователям нет необходимости.
Тесты для динамических массивов видел, интересно, косвенное подтверждение работы менеджера памяти.
0
|
![]() ![]() ![]() |
|
22.07.2017, 07:38 | |
Спасибо за поправку, да, разумеется, деструктор будет вызван только когда кол-во ссылок на объект достигнет 0.
0
|
22.07.2017, 07:38 | ||||||
Помогаю со студенческими работами здесь
11
Как работать с большими XML Как работать с большими числами Как работать с большими словарями Как работать с большими числами? Как работать с большими текстами? Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
|
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution
В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
|
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
|
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
|
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
|
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
|
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
|
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
|
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
|
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
|