如何使用';大型';信号数量? 我有一个带有C++功能的Simulink模型,我想发送一个大的嵌套总线,但是编译器在大约十分钟后崩溃,因为堆空间不足。

如何使用';大型';信号数量? 我有一个带有C++功能的Simulink模型,我想发送一个大的嵌套总线,但是编译器在大约十分钟后崩溃,因为堆空间不足。,c++,compilation,simulink,s-function,C++,Compilation,Simulink,S Function,巴士内有九条巴士,车内还有一组巴士,共有49条巴士,一棵树上有490个信号灯。我已经生成了完整的总线定义,它们都在全局工作区中。我还在头文件中生成了完整的结构定义,49条总线中的每一条都使用了头文件 此SF功能自动生成的源大约为24000行 编译此SF函数很长一段时间后失败,原因是第2次传递时堆空间不足。我使用的是用Visual C++ 2010 Express发送的编译器。 我已经尝试过用元素逐个填充总线,并且看到编译时间几乎呈指数级增长,直至失败。为什么性能如此之差,有没有办法用这种大小的总

巴士内有九条巴士,车内还有一组巴士,共有49条巴士,一棵树上有490个信号灯。我已经生成了完整的总线定义,它们都在全局工作区中。我还在头文件中生成了完整的结构定义,49条总线中的每一条都使用了头文件

此SF功能自动生成的源大约为24000行

编译此SF函数很长一段时间后失败,原因是第2次传递时堆空间不足。我使用的是用Visual C++ 2010 Express发送的编译器。
我已经尝试过用元素逐个填充总线,并且看到编译时间几乎呈指数级增长,直至失败。为什么性能如此之差,有没有办法用这种大小的总线进行编译?

您尝试过使用数据字典吗?这将从全局工作区中删除总线对象。我还没有测试这是否会对编译产生影响,但可能值得一试,而且清理您的工作区也很好。问题的背景是通过分析总线并动态生成包含所有结构的标头,并将所有总线放置在全局工作区上,来传递一个大型总线,从而生成一个SFFunction(只是因为编译需要它们。)其想法是能够更改模型并自动更新SF函数本身。另一个限制是使用MATLAB 2010b。数据字典是否与此概念兼容?它们与第一部分兼容,但与R2010b不兼容:(我认为该功能大约在2013年发布。优化-->信号和参数选项卡如何?您是否尝试过所有选项,如“重用块输出”和“信号存储重用”?出于其他原因,我们无法使用“信号存储重用”,但所有其他优化都在使用中。