Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Динамические массивы - как сделать правильней


Автор: JSinx 12.9.2012, 10:37
Пишу программку, которая в процессе работы все время добавляет и удаляет данные из массива (массив типа запись). В связи с этим поступило предложение не удалять данные из массива, а сделать флаг - что запись удалена. При добавлении новой записи, в первую очередь замещать такие записи и только затем создавать новые. Как будет оптимальней сделать?

Автор: Фантом 12.9.2012, 10:46
Цитата(JSinx @  12.9.2012,  11:37 Найти цитируемый пост)
Пишу программку, которая в процессе работы все время добавляет и удаляет данные из массива (массив типа запись). В связи с этим поступило предложение не удалять данные из массива, а сделать флаг - что запись удалена. При добавлении новой записи, в первую очередь замещать такие записи и только затем создавать новые. Как будет оптимальней сделать? 

Именно массив принципиален или это просто способ хранения большого количества однородной информации? Если второе, то, возможно, проще сделать список.

Автор: Akella 12.9.2012, 15:58
Или базу

Автор: JSinx 14.9.2012, 09:15
Цитата(Фантом @  12.9.2012,  13:46 Найти цитируемый пост)
это просто способ хранения большого количества однородной информации


Долгого хранения информации нет. В течении 10 секунд может добавиться и удалиться 20-30 записей.  При выходе из программы ничего сохранять не нужно.

Автор: Poseidon 16.9.2012, 02:49
Для скорости работы алгоритма лучше первое. Выделять и отпускать память по 20-30 раз в секунду - затратно. Быстрее будет помечать.
Для красоты и понимания кода, а так же для простоты его дальнейшей поддержки - второе.

Автор: RomanEEP 17.9.2012, 12:07
Делайте списком объектом. Выделения динамической памяти очень быстрое за счет того, что там точно также помечается флагом куски памяти как свободные/занятые.
Оптимизировать самому имеет смысл только если кол-во создаваемых объектов составляют не  менее 50.000 - 100.000 в секунду.
Тормоза могут быть при вставке/удалении элементов из начала большого списка. Тогда, если-кол-во элементов в массиве превышает 1000 имеет смысл использовать одно- или дву-связный список

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