我有 a
、b
和 A
。
a = some expression 1
b = some expression 2
A = a + b
对比
A = some expression 1 + some expression 2
在我的代码中,不仅有 a
和 b
,还有很多。通过使用后一种方法而不首先创建变量,即仅将 A
中的所有表达式相加,我的程序速度加快了 1 秒,总计约为 11 秒。经过长时间的测试证实了这一点。所以从11s减少到10s左右。这是因为一开始没有创建变量吗?一开始不创建变量是否会导致计算速度更快?
我需要运行大量的 for 循环并运行 ode 求解器并进行长时间计算。变量在循环内计算和创建。如果我能减少大约 10%,那就太好了。
最佳答案
一般情况下(不仅仅是 MATLAB)。
您的第一个场景需要这些额外的步骤,这些步骤不适用于第二个场景。
- 创建变量时,需要分配内存来存储变量的值。
- 当为该变量赋值时,需要将该值写入该变量在内存中的空间。
- 当请求计算时,需要从内存中检索每个变量的值。
许多编译器通过使用各种技术来优化这些额外的开销,但许多解释语言却没有。 (但这不是一个硬性规定,有聪明的解释语言和愚蠢的编译语言)。
我不知道 MATLAB 的内部结构到底是如何工作的,但我确实认为它是 解释,这意味着额外的步骤可能会产生额外的开销。
第二个场景的问题是,从长远来看,它的可读性和可维护性较差。使用变量名称时更容易阅读计算和中间步骤。诀窍是平衡性能和可读性。
关于matlab - 编程练习: Does not creating variables at first lead to faster computation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049164/