Каков наилучший способ управления большим количеством экземпляров одного и того же класса в MATLAB?
Использование наивного способа дает абсимальные результаты:
classdef Request
properties
num=7;
end
methods
function f=foo(this)
f = this.num + 4;
end
end
end
>> a=[];
>> tic,for i=1:1000 a=[a Request];end;toc
Elapsed time is 5.426852 seconds.
>> tic,for i=1:1000 a=[a Request];end;toc
Elapsed time is 31.261500 seconds.
Наследование ручкой радикально улучшает результаты:
classdef RequestH < handle
properties
num=7;
end
methods
function f=foo(this)
f = this.num + 4;
end
end
end
>> tic,for i=1:1000 a=[a RequestH];end;toc
Elapsed time is 0.097472 seconds.
>> tic,for i=1:1000 a=[a RequestH];end;toc
Elapsed time is 0.134007 seconds.
>> tic,for i=1:1000 a=[a RequestH];end;toc
Elapsed time is 0.174573 seconds.
, но все еще не приемлемая производительность, особенно с учетом увеличения накладных расходов на перераспределение
Есть ли способ предварительно выделить массив классов? Любые идеи о том, как эффективно управлять количествами объектов?
Спасибо
Dani