【发布时间】:2014-12-23 10:43:11
【问题描述】:
假设我有一个项目,其中包括:
- 处理我的所有模拟运行的主脚本
- 几个较小的函数
- 几个包含数据的结构体
在脚本中,我将在 for 循环中多次访问这些函数(在长达一分钟的模拟中有些超过一千次)。每个函数也在寻找包含在结构文件中的数据作为其计算的一部分,这些数据通常是在模拟过程中固定的参数,但是需要在运行之间手动改变以观察效果。
由于这些函数通常构成运行时的大部分,我试图节省时间,因为我的模拟不能完全按照目前的方式实时运行(最终目标),而且我会浪费很多时间来传递变量/ 函数周围的参数。所以我有三个想法来尝试这样做:
- 在主模拟中加载结构体,然后将每个变量以大参数的形式依次传递给函数(当前解决方案)。
- 每次调用函数时加载结构。
- 将结构定义为全局变量。
就系统的效率(随着项目的发展而最相关)以及从“良好实践”的角度来看,我可能不是专业程序员而言,最好的解决方案是什么?还有其他我没有考虑过的选择吗?
【问题讨论】:
-
第一个对我来说似乎最有效。
-
传递和引用结构变量是一种高效的操作。寻找其他地方来优化软件。查看您当前从循环中调用的函数是否可以向量化以一次处理整个
。 -
向我们提供更多关于您的代码究竟在哪里变慢的信息会很有帮助。我提供了一个答案,但鉴于您在回应 matlabgui 的回答时所说的一些内容,我不确定它是否会有所帮助。
标签: matlab