Я должен создать очередь в matlab, который содержит структуры, которые являются очень большими. Я не знаю, как большой эта очередь доберется. Matlab не имеет связанных списков, и я волнуюсь, что повторенное выделение и копирование действительно собираются замедлить этот код, который должен быть выполненными тысячами времен. Мне нужен своего рода способ использовать growable структуру данных. Я нашел несколько записей для связанных списков в справке matlab, но я не могу понять то, что продолжается. Кто-то может помочь мне с этой проблемой?
Что ж, я нашел простой ответ:
L = java.util.LinkedList;
Если вы беспокоитесь, что повторяющиеся выделение и копирование будут замедлять работу кода, попробуйте. Это может быть очень медленно, но вы можете быть приятно удивлены.
Некоторое время назад я опубликовал решение похожей проблемы. Я решил ее следующим образом: выделил массив с начальным размером BLOCK_SIZE
, а затем увеличивал его на BLOCK_SIZE
по мере необходимости (всякий раз, когда свободных слотов оставалось менее 10%*BLOCK_SIZE
).
Обратите внимание, что при адекватном размере блока производительность сравнима с предварительным распределением всего массива с самого начала. Простой бенчмарк, который я сделал, смотрите в другом посте.
Просто создайте массив структур и удвойте размер массива, когда он достигнет предела. Это хорошо масштабируется.