MATLAB中的单元数组赋值性能

时间:2017-08-28 11:54:33

标签: matlab performance

我目前正在使用matlab开展一个项目。在这个项目中,我首先编写了一个 Agent 类,然后编写了一个名为 AgentCollection Agent 类的集合,它通过一个单元格数组来保存代理。最后,我写了一个 Model 类,它生成 Agent 实例并将其添加到集合实例中。

程序真的很慢,所以我使用配置文件工具试图弄清楚发生了什么。令人惊讶的是,我发现单元格数组的分配非常慢。

enter image description here

agentPool是 AgentCollection 类中的单元格数组,最初使用size(50000,1)分配池。然后我测试了对象之外的单元格数组赋值的性能

tic

x = cell(100000,1);

for m = 1:1:100000
    x{m} = pbm;
end
toc

其中pbm是模型的实例。这段代码实际运行得很快。为什么单元格数组分配看起来如此之慢?我可以使用其他数据结构来提高性能吗?非常感谢你!

请注意,代理 AgentCollection 模型类都是句柄的子类。我的MATLAB版本是R2016b。

0 个答案:

没有答案