Структура данных Growable в MATLAB

Я должен создать очередь в matlab, который содержит структуры, которые являются очень большими. Я не знаю, как большой эта очередь доберется. Matlab не имеет связанных списков, и я волнуюсь, что повторенное выделение и копирование действительно собираются замедлить этот код, который должен быть выполненными тысячами времен. Мне нужен своего рода способ использовать growable структуру данных. Я нашел несколько записей для связанных списков в справке matlab, но я не могу понять то, что продолжается. Кто-то может помочь мне с этой проблемой?

6
задан rlbond 12 April 2010 в 20:08
поделиться

4 ответа

Что ж, я нашел простой ответ:

L = java.util.LinkedList;
2
ответ дан 8 December 2019 в 17:19
поделиться

Если вы беспокоитесь, что повторяющиеся выделение и копирование будут замедлять работу кода, попробуйте. Это может быть очень медленно, но вы можете быть приятно удивлены.

Остерегайтесь преждевременной оптимизации.

2
ответ дан 8 December 2019 в 17:19
поделиться

Некоторое время назад я опубликовал решение похожей проблемы. Я решил ее следующим образом: выделил массив с начальным размером BLOCK_SIZE, а затем увеличивал его на BLOCK_SIZE по мере необходимости (всякий раз, когда свободных слотов оставалось менее 10%*BLOCK_SIZE).

Обратите внимание, что при адекватном размере блока производительность сравнима с предварительным распределением всего массива с самого начала. Простой бенчмарк, который я сделал, смотрите в другом посте.

6
ответ дан 8 December 2019 в 17:19
поделиться

Просто создайте массив структур и удвойте размер массива, когда он достигнет предела. Это хорошо масштабируется.

3
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: