QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10528|回复: 5
打印 上一主题 下一主题

极限测试之Matlab与Forcal矩阵运算效率测试

[复制链接]
字体大小: 正常 放大
forcal 实名认证       

45

主题

3

听众

282

积分

升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2011-8-1 08:00 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    1、小矩阵大运算量测试$ B& A; @6 ^4 K2 ?  H

    $ _; D  m2 |& W: fMatlab 2009a代码及结果:
    1. clear all6 e/ q6 H& s2 v9 m\" N* t
    2. tic
      , c. W2 B3 h: j\" _7 [; C2 @
    3. k = zeros(5,5); % //生成5×5全0矩阵\" F+ p+ T7 b3 v4 k
    4. % 循环计算以下程序段100000次:
      1 {( |: p) Z# \3 k# y9 u; g
    5. for m = 1:100000, N4 _! U5 d- J
    6.     a = rand(5,7);
      - B2 y$ F2 L% H  D& i- M6 x
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化3 A. F1 v( Z, x( L9 L. ?' u
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);! A7 J\" \2 `8 n1 h+ a
    9. end/ _# U. p- Z' @% k& M* ^. {4 ]
    10. k+ M# f. ]! g& J( ~2 R) d
    11. toc
      6 {) T* u# c7 Y1 |8 u# L
    12. 6 L- i  X5 f/ t1 u
    13. k =
      ' s6 s) `. _* D5 i# `  I% Q\" Y( x

    14. 2 Z' L# W: g, C( o3 i3 b1 i
    15.   1.0e+005 *
      2 `; g# |0 F/ R+ t

    16. 9 K# \( K5 e  a9 Y
    17.     2.7525    2.7559    2.7481    2.7525    2.7511
      ! C$ S& F8 P: C\" B\" x
    18.     2.7527    2.7535    2.7430    2.7545    2.7484) G  V! S/ h. t0 z: `, v, e
    19.     2.7493    2.7553    2.7440    2.7513    2.7485) j, z+ a# Q6 h\" g4 }
    20.     2.7481    2.7506    2.7425    2.7457    2.7460! d! J7 X3 f; T) L\" }+ e) N* B5 Q
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      - a3 |0 K6 E! ]1 W! z1 a, K
    22. + Z8 V+ t% _$ L( ~  Y. r
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    8 u6 o9 ~9 r0 v* E' P4 t" y& Z4 M& n( j1 r! G; A
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. & c! a5 h$ p4 T& t9 F7 u
    3. (:t0,k,i,a,b)=
    4. ) x% L8 D8 m% g4 s. g' v' q\\" X
    5. {6 w7 Z2 C) I: ]) \
    6.   t0=clock(),8 H% E5 M- J8 L8 d+ u
    7.   k=zeros[5,5],. C$ Z( {5 T0 X: K+ j( Z
    8.   i=0,(i<100000).while{
    9. % W: a& a8 |% x: r\\" c3 P& f
    10.     oo{
    11. \\" B) U1 u1 l. r* R0 j9 U) P
    12.       a=rand[5,7], b=rand[7,5],& _  b9 ^) X/ r$ e! _
    13.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)
    14. - G9 Z8 o1 e9 H# ~
    15.     },+ I; o7 O* Z! g% i7 t( |, i5 d- J5 O
    16.     i++
    17. # U( g% t) `& g6 `* E( d* X
    18.   },. I8 c  t6 Z  s& b
    19.   k.outm().delete(),0 B3 A% S+ n/ j! s
    20.   [clock()-t0]/1000
    21. / N* }) }! K7 G+ E/ B- A
    22. };
    结果:
    1.          274978         274892         274913         274949         2749538 i3 J! }  X: F- U7 D
    2.          274994         275050         275001         275037         274892
      9 \1 {4 `! |4 |$ ]2 A, d5 q
    3.          275001         275063         275019         274963         274971
      6 a- f% N, c- C6 g# v0 a9 y
    4.          274945         274999         275017         274983         274982/ d7 h\" @  a4 |* I8 s6 r
    5.          275009         274984         274971         274955         2749239 [  ^2 E$ K2 H3 Y5 L2 O

    6. $ u$ h6 \; h; G8 N: I& {
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。
    6 O+ ?0 o3 b" f+ B2 h! ~6 S$ M5 U
    " n" O, I3 f7 C6 u0 x==================' q1 l; E8 j* e+ g+ W/ e
    ==================4 X1 Y( ?! |% x. u
    3 q; O( ?1 D+ \/ t4 h$ E
    2、大型矩阵乘; y  C( r+ l% D8 h

    5 U0 D% L; C; e, w, p" I- ~Matlab 2009a代码及结果:
    1. clear all
      ( Z/ C) u. [* A0 n2 M& e1 }
    2. a = rand(1000,1000);
        j% @* }* r* j' r) n
    3. b = rand(1000,1000);
      : b\" i4 a$ @) E3 C! C; K% P' B
    4. tic4 ~- L9 X2 j% ]6 ?: B+ e5 h# E
    5. k = a * b;
      ( P5 m* D  ?0 l, q8 g& e  R
    6. k(1:3, 5:9)/ [+ Q! e* Y: ~  D5 y8 d
    7. toc7 I% N2 M; m1 b+ ~0 j! J

    8. % c\" S% U! X: Y# R/ C: l( t' x
    9. ans =
      3 J9 ]) L( k5 \7 K2 I5 ?

    10. ' Z* H% `$ k' ]( A
    11.   246.1003  244.3288  252.9674  258.1527  243.9345
      ; S4 k\" b- n# {' Y8 B
    12.   246.7404  236.1487  249.7140  251.3887  246.02943 c% B1 R9 B7 Q* P6 P% `# p
    13.   249.4205  240.5515  252.5847  257.0065  249.7137
      & B+ i7 g6 k' T1 a
    14. - E* m& X6 h0 R
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================
    0 M8 ~/ R) z8 u( X0 L% G6 D. Q7 e. P+ o" A
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. 1 d* c\\" e4 q7 i1 Y! W7 a
    3. main(:a,b,k,t0)=
    4. ' g& x- h7 C* P  Q1 D. U' s
    5. oo{0 E+ s8 b5 w) p  `8 p, J* n' o
    6.   a=rand[1000,1000], b=rand[1000,1000],
    7. % |* O; g* B  X0 u7 S
    8.   t0=clock(),
    9. 5 f% w( O# Z7 K& e0 ~1 r& \/ R$ q: \
    10.   k=a*b,  //矩阵乘: w/ p6 m+ y, n% U$ b
    11.   k[1,3:5,9].outm()# a: S, h9 c9 S% _% U$ H6 m
    12. },
    13. 8 F, w1 M3 ?: c) Y& G( E/ Z5 q\\" W; N
    14. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482
      : v5 i8 w6 D: V0 }$ L# s3 R9 q  v3 Q9 M
    2.         258.268        255.417        253.738        255.159        253.0420 O4 U: @. X3 a% q8 H
    3.         258.088        252.324        248.927        252.392        247.731- R( c7 e7 |# Y$ M$ D% r
    4. ; E, N- `' t5 z
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。0 A3 I4 L& Z7 f: w5 v: G

    ' E4 {& G2 D* X3 w4 T==================2 D$ w4 _7 _% g! F5 x$ b
    ==================" Y$ e5 p/ S4 y( I

    6 N. p) r+ J( j' z+ |7 r. _矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。
    ) t) X/ B  C0 i( b8 [9 E6 K$ ^2 X
    4 @: q, }5 j' v/ T: q* K6 f1 ZForcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。
    8 Y5 [. L8 P: E4 U+ ]+ m, \* h. x
    除了矩阵运算,Matlab还有许多非语言特性的优势,例如函数图形功能(不包括其GUI,Forcal是嵌入式脚本,C/C++、Delphi等的GUI就是Forcal的GUI)、符号计算功能、控制仿真、金融建模等等。这些实用方便的算法模块使matlab获得了广大用户的青睐。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    chairong 实名认证       

    0

    主题

    3

    听众

    761

    积分

    升级  40.25%

  • TA的每日心情
    无聊
    2012-6-23 22:06
  • 签到天数: 207 天

    [LV.7]常住居民III

    自我介绍
    抬头吃太阳

    群组岩土力学与地下工程

    群组中国矿业大学数模培训

    回复

    使用道具 举报

    8

    主题

    2

    听众

    145

    积分

    升级  22.5%

  • TA的每日心情
    郁闷
    2011-9-17 10:59
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    0

    主题

    3

    听众

    56

    积分

    升级  53.68%

  • TA的每日心情
    开心
    2011-12-23 20:56
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    回复

    使用道具 举报

    alair005        
    头像被屏蔽

    0

    主题

    4

    听众

    782

    积分

    升级  45.5%

  • TA的每日心情

    2012-2-7 08:08
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    0

    主题

    0

    听众

    5

    积分

    升级  0%

    该用户从未签到

    自我介绍
    888888
    济南夜场招聘,济南翰林商务会所招聘夜场模特佳丽13156404415,400每台,小费日结无押金。qlktv.net
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-18 22:57 , Processed in 0.449966 second(s), 85 queries .

    回顶部