据我所知,MATLAB pass by reference
在向其他函数发送参数时无法使用.我正在进行音频处理,而且我经常不得不将波形作为参数传递给函数,并且因为MATLAB使用pass by value
这些参数,所以当我这样做时它会占用大量的RAM.
我正在考虑使用global
变量作为一种方法将我的波形传递给函数,但我读到的每个地方似乎都有一个普遍的看法,这是一个坏主意,代码组织和潜在的性能问题...但我没有真的阅读有关这可能会如何影响性能的任何详细答案......
我的问题:使用全局变量(大小> 100MB)将参数传递给MATLAB中的其他函数会产生什么负面影响,包括1) 性能和2) 通用代码组织和良好实践.
编辑:从下面的@ Justin的回答中可以看出,当你不修改函数中的参数时,MATLAB有时会使用按引用传递!由此,我有关于全局变量性能的第二个相关问题:
使用全局变量会比使用pass by reference
函数参数慢吗?
MATLAB 确实使用传递引用,但也使用copy-on-write.也就是说,你的变量将通过引用传递给函数(因此不会在RAM上加倍),但如果你在函数中更改变量,那么MATLAB将创建一个副本并更改副本(离开原件未受影响).
这个事实似乎并不太为人所知,但Loren的博客上有一篇很好的帖子可以讨论它.
底线:听起来你根本不需要使用全局变量(这是一个坏主意,如@Adriaan所说).