当前位置:  开发笔记 > 编程语言 > 正文

使用全局变量会影响MATLAB的性能吗?

如何解决《使用全局变量会影响MATLAB的性能吗?》经验,为你挑选了1个好方法。

据我所知,MATLAB pass by reference在向其他函数发送参数时无法使用.我正在进行音频处理,而且我经常不得不将波形作为参数传递给函数,并且因为MATLAB使用pass by value这些参数,所以当我这样做时它会占用大量的RAM.

我正在考虑使用global变量作为一种方法将我的波形传递给函数,但我读到的每个地方似乎都有一个普遍的看法,这是一个坏主意,代码组织和潜在的性能问题...但我没有真的阅读有关这可能会如何影响性能的任何详细答案......

我的问题:使用全局变量(大小> 100MB)将参数传递给MATLAB中的其他函数会产生什么负面影响,包括1) 性能2) 通用代码组织和良好实践.

编辑:从下面的@ Justin的回答中可以看出,当你不修改函数中的参数时,MATLAB有时会使用按引用传递!由此,我有关于全局变量性能第二个相关问题:

使用全局变量会比使用pass by reference函数参数慢吗?



1> Justin..:

MATLAB 确实使用传递引用,但也使用copy-on-write.也就是说,你的变量将通过引用传递给函数(因此不会在RAM上加倍),但如果你在函数中更改变量,那么MATLAB将创建一个副本并更改副本(离开原件未受影响).

这个事实似乎并不太为人所知,但Loren的博客上有一篇很好的帖子可以讨论它.

底线:听起来你根本不需要使用全局变量(这是一个坏主意,如@Adriaan所说).

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有