什么是最有效的方法:负载或设置全局变量

20视图(30天)
我使用一个脚本,该脚本调用一个函数多次(1000);在这个函数中,大量使用复数矩阵,这个矩阵被称为“promat”也叫“promat.mat”保存在文件。具体而言,我的功能是:
函数y =过程(x)
与x的东西
y = x。* promat;
结束
我想到三种解决方案:金宝搏官方网站
+:负载promat工作空间,然后把它作为全局变量和函数中声明它。
+第二:负载promat工作空间,然后把它作为输入的函数为:
函数y =过程(x, promat)
+第三:加载函数内的矩阵。
我想知道什么是最快和最有效的方法,无论是在内存使用效率和性能。任何答案,讨论将赞赏:)。

接受的答案

阿米特
阿米特 2013年12月31日
编辑:阿米特 2013年12月31日
promat如果你不改变值在函数内部,Matlab promat不会分配新的内存。只要一个promat只读取内部函数的目的,选择第二个更好。
我将避免声明全局变量。加载promat。垫在矩阵会产生额外的开销,最有可能降低性能。
3评论
NMTri
NMTri 2014年1月8日
谢谢你的链接和解释。我的代码与第二个选项适用和更快。

登录置评。

答案(1)

1月
1月 2013年12月31日
重用的记忆 x :
函数x =过程(x)
与x的东西
x = x。* promat;
结束
然后再考虑,写这个问题花了2分钟。将永远保存的计算时间的总和超过2分钟?如果不是,这是一个典型的“过早优化”的例子。
代码应该是优化的,当它完全是编写和测试成功。然后分析必须识别瓶颈,因为它是一个浪费时间的改善计划的一部分,将总计算时间的只有一小部分。
不管怎样,我同意肖恩和沃尔特:避免磁盘访问和尽量减少全局变量的使用。
1评论
NMTri
NMTri 2014年1月8日
谢谢你的建议关于“过早优化和代码优化,我也认为他们在编写代码,这个问题。
顺便说一下,输入矩阵是真实的,和输出矩阵是复杂的,因为“promat”是复杂的,所以它是有效重用内存时?我读到内存优化在matlab和他们说,我们不应该将复杂的值分配给已分配实值矩阵。

登录置评。

类别

找到更多的在创建和连接矩阵帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!