Я создал монстра или, по крайней мере, много классов дескрипторов MATLAB, которые указывают друг на друга. Например, эксперимент (дескриптор) представляет собой набор треков (ручек), которые содержат прогоны (дескриптор) и переориентации (дескриптор). Затем треки указывают на эксперимент, который содержит их, прогоны и переориентации указывают на отслеживаемый трек, и они также указывают вперед и назад на следующий прогон & переориентации.Загрузка сохраненных объектов с диска происходит медленно в Matlab
Я понял, что весь этот крест, указывающий вокруг, может смутить MATLAB, когда придет время загружать или сохранять файлы, так как я могу определить дескрипторы Transient и использовать методы set.property для определить обратные указатели. Например
Track < Handle
properties(Transient = true)
expt;
end
end
Experiment
properties(AbortSet = true)
track;
end
methods
function set.track(obj, value)
if (~isempty(value) && isa(value, 'Track'))
value.expt = obj;
end
obj.track = value;
end
end
Это, кажется, ускорили загрузку с диска несколько, но я думаю, что я до сих пор не хватает вещей.
Я могу сохранить эксперимент на диске, создав файл 48 МБ, примерно через 7 секунд. Но для загрузки файла с диска требуется 3 минуты. Я попытался использовать профилировщик для поиска медленных точек, но он сообщает об общем времени ~ 50 миллисекунд.
Вопросы:
Кто-нибудь есть опыт работы с сохранением объектов ручки на диск и может рекомендовать общие методы для ускорения загрузки?
Есть ли способ заставить профилировщик сообщить, что делает Matlab с другими 179,95 секунд, или систематический способ определить, что замедляет загрузку без использования профилировщика?
Вы забыли приложить код, используемый для сохранения и загрузки данных. Не зная этого кода, невозможно дать вам достойный ответ. –
Я сохраняю файлы, используя стандартные команды сохранения и загрузки matlab для сохранения в .mat-файлах. – Marc
Обрабатываемые объекты обычно имеют ужасную производительность, см. Здесь: http://stackoverflow.com/questions/1446281/matlabs-garbage-collector/1489751#1489751 – Mikhail