我目前正在使用matlab开展一个项目。在这个项目中,我首先编写了一个 Agent 类,然后编写了一个名为 AgentCollection 的 Agent 类的集合,它通过一个单元格数组来保存代理。最后,我写了一个 Model 类,它生成 Agent 实例并将其添加到集合实例中。
程序真的很慢,所以我使用配置文件工具试图弄清楚发生了什么。令人惊讶的是,我发现单元格数组的分配非常慢。
agentPool是 AgentCollection 类中的单元格数组,最初使用size(50000,1)分配池。然后我测试了对象之外的单元格数组赋值的性能
tic
x = cell(100000,1);
for m = 1:1:100000
x{m} = pbm;
end
toc
其中pbm是模型的实例。这段代码实际运行得很快。为什么单元格数组分配看起来如此之慢?我可以使用其他数据结构来提高性能吗?非常感谢你!
请注意,代理, AgentCollection 和模型类都是句柄的子类。我的MATLAB版本是R2016b。