|
加速matlab运行的三重境界(1)
发信人: fork (撒哈拉沙漠的沙), 信区: Matlab 标 题: 加速matlab运行的三重境界 发信站: BBS 哈工大紫丁香站 (Tue Jul 6 13:34:36 2004)
加速matlab运行的三重境界
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% 一、 遵守Performance Acceleration的规则 二、 遵守三条规则 三、 绝招
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% 一、 遵守Performance Acceleration的规则
关于什么是“Performance Acceleration”请参阅matlab的帮助文件。我只简要的将 其规则总结如下7条: 1、只有使用以下数据类型,matlab才会对其加速: logical,char,int8,uint8,int16,uint16,int32,uint32,double 而语句中如果使用了非以上的数据类型则不会加速,如:numeric,cell,strUCtu re,single, function handle,Java classes,user classes,int64,uint64 2、matlab不会对超过三维的数组进行加速。 3、当使用for循环时,只有遵守以下规则才会被加速:a、for循环的范围只用标量值 来表示; b、for循环内部的每一条语句都要满足上面的两条规则,即只使用支持加速的数 据类型,只使用 三维以下的数组;c、循环内只调用了内建函数(build-in function)。 4、当使用if、elseif、while和switch时,其条件测试语句中只使用了标量值时,将 加速运行。 5、不要在一行中写入多条操作,这样会减慢运行速度。即不要有这样的语句: x = a.name; for k=1:10000, sin(A(k)), end; 6、当某条操作改变了原来变量的数据类型或形状(大小,维数)时将会减慢运行速
|