标题: 极限测试之Matlab与Forcal矩阵运算效率测试 [打印本页] 作者: forcal 时间: 2011-8-1 08:00 标题: 极限测试之Matlab与Forcal矩阵运算效率测试 1、小矩阵大运算量测试* c' s' m0 p+ B) T) A, R
8 j$ K: x! o k0 I u
Matlab 2009a代码及结果:
clear all$ @% @" f' i) u x) a- W9 G! t
tic 4 E; P, Z _8 @: ~5 f
k = zeros(5,5); % //生成5×5全0矩阵. o" U, V6 ~4 y; P+ c; v W
% 循环计算以下程序段100000次: " F% a& u6 I0 f, c" Q7 f o3 l
for m = 1:100000; o+ N# f$ I' j7 s7 u' b; A
a = rand(5,7); ) s* S0 u$ H( ]9 V. Z! R
b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化- V/ F; Y0 r# K6 |- L- ?/ r; A
k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :); ! b, t/ Q8 L' \7 C+ v
此类运算Matlab的速度约是Forcal的7倍多。0 [; {2 w) ]: O% ^7 |" s
2 V r U- s6 ~% {
==================. o' G8 j& u5 {& t* t
================== 1 ]; [3 n( O# J. f/ F' S' t 0 X% x- d0 F9 I& v0 b0 \, W, K矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。1 n$ ]9 A/ x2 i6 [5 i9 H
2 g7 \) p% o, x" K) `
Forcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。' O; W+ l' b7 ` P' C