QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10332|回复: 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、小矩阵大运算量测试
    ( q  I# ]3 ~6 G" Q# P, [7 g+ r8 ~) Z  H6 _! `3 i+ B2 h
    Matlab 2009a代码及结果:
    1. clear all$ }; s8 h2 @8 I
    2. tic
      1 }! C2 r& k$ c8 @
    3. k = zeros(5,5); % //生成5×5全0矩阵
        T  f! C% q  `
    4. % 循环计算以下程序段100000次:
      / j  Y/ ^. ?8 k( A. q
    5. for m = 1:100000% @: {) t  c5 E8 C, I8 S- A) a
    6.     a = rand(5,7);
      , Y- ~$ n: s& l; D4 R+ o. E
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      5 ~4 G3 A/ X% A3 Q% Z- k/ _! |
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
      / g, v7 [+ R5 Q4 }\" s8 U
    9. end
      # c$ s\" s3 T: i3 Z6 e) v) L! K
    10. k
      : O% q; G* F# W
    11. toc
      6 f# F, X0 q  y

    12. \" u# ~% A! m! D- T
    13. k =, V$ J  u7 X* v+ W
    14. ; i% k  j5 q7 t  W
    15.   1.0e+005 *9 d' ?% B/ s  ^( s! x) G& H

    16. 1 j* z2 e) d5 c/ a9 r$ m
    17.     2.7525    2.7559    2.7481    2.7525    2.7511
      * \\" p/ w. T! A! Z) [9 |/ R4 h! x
    18.     2.7527    2.7535    2.7430    2.7545    2.74841 z6 i! b- q( G+ w/ K$ L
    19.     2.7493    2.7553    2.7440    2.7513    2.7485
        E& i' o& s6 n2 L9 M8 G( u
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      3 A$ r( S/ |) m\" g
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      ' d, `, ^2 b' H5 _2 C9 W9 N
    22. 6 o' j- V2 _* {3 ]9 F4 {/ z
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    ( B) j5 G# U6 e% ?4 Z
      L5 p1 E, v4 X7 w0 w6 a! IForcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. ' W' j+ f% ?- G
    3. (:t0,k,i,a,b)=
    4. ) A' ]+ }+ l3 }$ g/ f9 h
    5. {
    6.   g/ J' u. @6 Y( c5 x6 p
    7.   t0=clock(),
    8. & I) W- Q2 g  W
    9.   k=zeros[5,5],
    10. \\" B' e\\" i- k, }& _5 P
    11.   i=0,(i<100000).while{, E. G% O1 j6 V% g
    12.     oo{
    13. ! Y) g. v! v* H9 z7 t, x4 H
    14.       a=rand[5,7], b=rand[7,5],+ p. H* F. l5 C8 v  b
    15.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)
    16. & G% s1 ^7 ~! c4 J0 x
    17.     },. u\\" s+ I- x- a5 ^' m5 k
    18.     i++0 _5 {: u4 b; [/ s7 p% n
    19.   },
    20. 8 w# P8 V! Q/ I9 H. i
    21.   k.outm().delete(),\\" l- B( c6 U  D0 H, v
    22.   [clock()-t0]/1000% u% \1 D9 z6 r0 a7 H( X\\" ?
    23. };
    结果:
    1.          274978         274892         274913         274949         274953
      % ^4 B: g9 [; H2 K
    2.          274994         275050         275001         275037         274892
      2 |% B1 i* v3 q0 d& B7 V
    3.          275001         275063         275019         274963         274971% k. f% o2 {# Z6 d& p5 ]
    4.          274945         274999         275017         274983         274982
      2 j# a: O4 m, a: g8 ]/ n
    5.          275009         274984         274971         274955         274923' o. K7 W. C) `4 f7 a  S7 W9 [
    6. ! N4 [* S2 p/ i/ _8 l+ K
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。4 _+ P% H3 O0 j/ L

    ) m/ ^0 u1 k4 `7 U  K==================+ m7 N+ E8 v5 l; j$ Z6 k* ^
    ==================4 I5 y) X3 h# }# B/ R$ M

    / X" B! V& V" {. U2、大型矩阵乘  g* U4 \3 f: W
    1 q$ D  [3 C& E; E2 m8 C
    Matlab 2009a代码及结果:
    1. clear all; E* F9 D# ~\" `7 k; W3 N
    2. a = rand(1000,1000);
      - v$ s' \) Y' P  b' W
    3. b = rand(1000,1000);5 Z& n7 }# T. d$ c9 Q# s9 }
    4. tic7 m) F. \3 g8 h! U) a& [
    5. k = a * b;
      & }. t( D# `. N9 y5 a
    6. k(1:3, 5:9)- Y% ?( w% |+ e/ [- t. }6 S5 X7 }
    7. toc9 l/ ]1 B4 \' v5 @  {\" c' u

    8. # \6 v# V+ E5 f' ?( U6 L0 e/ Z
    9. ans =% ]4 }\" H5 y& a

    10. : i\" _7 k& D- f
    11.   246.1003  244.3288  252.9674  258.1527  243.9345
      9 f8 Q& n( J! K
    12.   246.7404  236.1487  249.7140  251.3887  246.0294
      / @. p; K) f2 N# |1 E8 b
    13.   249.4205  240.5515  252.5847  257.0065  249.7137/ B0 U# N  ]6 L# R\" T' b  n

    14. 6 C+ F( h  T: ?% ]5 _3 V2 N
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================* |+ r4 B7 \, p: M* m/ _. q
    - f) ~/ I. E& o* a
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. 4 q! L- J6 H* \
    3. main(:a,b,k,t0)=* o# D2 v1 B- k; L) N1 e\\" J& j
    4. oo{4 @8 [  R. g: q+ w0 C
    5.   a=rand[1000,1000], b=rand[1000,1000],
    6. ) M% P' k! I& N) D2 I
    7.   t0=clock(),
    8. $ R; a/ i+ {  ]1 \3 I; T
    9.   k=a*b,  //矩阵乘. H5 t/ }# k3 ?( @
    10.   k[1,3:5,9].outm()
    11. % W/ V' d7 p7 P\\" D7 W7 P  L9 u# S
    12. },' n+ R6 Q) z* V( g7 U  V
    13. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482# W0 d/ V\" K3 a. G, u* }& j: ]
    2.         258.268        255.417        253.738        255.159        253.042
      2 C7 `- e\" l! \4 Q8 v* V( E
    3.         258.088        252.324        248.927        252.392        247.731
      0 X. _; }$ a  ^3 o
    4. * X( u& E. U& Z1 i\" a* C1 b
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。
    " L( v# `3 @/ q6 V4 |( X: O  t2 Q4 B0 _$ X+ x$ l. K# W! z
    ==================
    - a3 ]! T0 Z% C9 I. Q! W, u==================
    ! w1 H, U. Q: l: z% i
    # ~) f9 F' J0 V6 q, a- J/ Q矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。* B' b5 n2 F( w1 ], \& o+ J
    7 ]; {, R) D& \! M4 W7 {
    Forcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。
    / Y5 C8 D5 Q$ E
    * `- K: P2 P) c/ p除了矩阵运算,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, 2025-11-15 22:15 , Processed in 2.724949 second(s), 85 queries .

    回顶部