QQ登录

只需要一步,快速开始

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

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

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

45

主题

3

听众

282

积分

升级  91%

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

    [LV.1]初来乍到

    跳转到指定楼层
    #
    发表于 2011-8-1 08:00 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    1、小矩阵大运算量测试
    2 I. }8 a9 ]) r8 {) Y# _, L3 f. N+ w& a# |  v
    Matlab 2009a代码及结果:
    1. clear all2 q* w/ [) i$ R3 Z- l  X2 i
    2. tic5 p6 T/ s' {/ A- f$ |6 s7 J
    3. k = zeros(5,5); % //生成5×5全0矩阵7 r5 k; }; o5 K7 E
    4. % 循环计算以下程序段100000次:( y+ P6 i# T, P  D: M7 M
    5. for m = 1:1000000 j  C3 N$ X: ~8 O+ g
    6.     a = rand(5,7);
      ( U\" b* R& r8 [1 c0 f
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      6 C& a6 }6 R) \6 o' M: b
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
      $ o2 d5 ]% f\" W+ `3 U
    9. end
      ( L, k- t6 Z( s3 p/ W
    10. k
      , U6 r/ z& z  Q
    11. toc/ ~( e. P$ H% R3 s
    12. 7 G# q. a, l2 h  q
    13. k =5 X  O  @; n2 c8 U

    14. . S/ q6 X; Q4 P9 N: V8 g2 h7 X
    15.   1.0e+005 *
      4 W  _  m7 |$ z6 Z
    16. 6 C. U4 A3 Y6 w  r, b' y& x( z
    17.     2.7525    2.7559    2.7481    2.7525    2.7511- o( }, L3 X' ?$ D% j\" _+ R
    18.     2.7527    2.7535    2.7430    2.7545    2.7484
      ( Y3 m  i8 U- Q8 L% q$ E  ~
    19.     2.7493    2.7553    2.7440    2.7513    2.7485
      : U1 L( _/ O' T& {! P4 `; u
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      * e# h. a( Y/ o0 x6 A1 {- f& R
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      8 n/ _8 c- n* X, c2 x& C5 p

    22. ( p9 {% u0 Z7 }( ^
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    3 t6 s: D0 z. e  c6 j- g5 b
    . u" t/ @. \9 }/ Q4 t% L0 n4 ^2 KForcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. % g$ u! k8 `3 a1 L3 S
    3. (:t0,k,i,a,b)=
    4. 7 o, s! d3 B' |9 U# u
    5. {
    6.   p9 G) t& C0 j# p% Z  T
    7.   t0=clock(),
    8. 9 ^: R9 |1 z. c
    9.   k=zeros[5,5],: K6 a; X$ P3 V: f, y3 E& Y. Q. A\\" s
    10.   i=0,(i<100000).while{
    11. ; |4 j, L0 I7 w* V0 Y9 ^3 M- T
    12.     oo{4 [0 m1 m$ c/ W+ L; {2 ]4 H8 d0 k2 g
    13.       a=rand[5,7], b=rand[7,5],! Q% a+ o9 W. K# V6 G: H$ g/ Y
    14.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)
    15. % ~\\" w$ K3 C6 G
    16.     },* F\\" s/ {3 j6 T; o8 a! L
    17.     i++
    18. / a5 l: \* P' b6 ?
    19.   },
    20. # V3 h: z( n  W% j9 B8 a
    21.   k.outm().delete(),
    22. # e* [: u. y+ r' n2 j
    23.   [clock()-t0]/1000
    24. 9 F: v0 c\\" V0 N% w( Q
    25. };
    结果:
    1.          274978         274892         274913         274949         274953
        X  g\" O* v4 Y7 D- T+ d
    2.          274994         275050         275001         275037         274892; @* j0 v5 X0 p3 P; Y7 L
    3.          275001         275063         275019         274963         2749714 A0 [: v6 \# ?+ H\" n
    4.          274945         274999         275017         274983         274982+ i: j; z% p% b! F7 K
    5.          275009         274984         274971         274955         274923
      - X% l' ?( l6 Y* E
    6. - `8 Y  q1 C' Z; v; ^' ]
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。+ p+ }% f) Z- j3 l5 J0 R

    1 H4 ~. Q7 x) o9 ^4 |" k0 z# `( l==================
    9 A6 B7 N1 p# p==================8 x5 k& @- T$ c# _% _/ J

    ) l0 t! W/ ^( k2、大型矩阵乘5 o% K' ^8 m5 f6 D* P! C
      d' A" r7 i; C" y
    Matlab 2009a代码及结果:
    1. clear all
      ! i2 R& R5 j& P  y# x
    2. a = rand(1000,1000);/ u9 t6 R- a0 N% M6 l' _  N+ l0 v3 ^. i
    3. b = rand(1000,1000);
      4 X# q. X- Q5 O: J8 g; b0 |5 f4 f/ T
    4. tic! h: D& Q9 J* d\" X. z6 P! e
    5. k = a * b;7 Z! M3 N9 R. f\" H2 z
    6. k(1:3, 5:9)' y3 k) i; W8 f
    7. toc1 [6 x1 W, H% Y
    8. 8 {- s9 K: Q! A7 d- t
    9. ans =
      % i$ n0 l/ H* t1 |( u
    10. & ~4 p  ~& p0 S% V6 `& U
    11.   246.1003  244.3288  252.9674  258.1527  243.93451 {- t0 z. L+ N  j4 M5 m6 H
    12.   246.7404  236.1487  249.7140  251.3887  246.0294
      1 Z! |; z) l9 w
    13.   249.4205  240.5515  252.5847  257.0065  249.7137. Q/ a5 Y6 r) Y3 u% J7 ^( x: X
    14. 1 s  V. o$ r( E+ T4 O3 d+ }* V
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================7 U0 \8 h1 P6 R$ u3 X1 L7 D% \

    % j* k* g' f. B! v5 H0 ^Forcal(OpenFC演示)代码:
    1. !using["math","sys"];1 B4 Z0 O: q1 K6 U
    2. main(:a,b,k,t0)=
    3. 6 j3 H: C3 O, S8 T$ F) R, C9 A1 S
    4. oo{* H9 R9 ?; L+ N$ q) }% z
    5.   a=rand[1000,1000], b=rand[1000,1000],
    6. 3 C( i\\" K5 V5 S+ `
    7.   t0=clock(),
    8. ! B$ B8 C9 H# ]+ J; v( r7 e
    9.   k=a*b,  //矩阵乘
    10. 7 ~* {9 G4 J6 h/ d2 U. f
    11.   k[1,3:5,9].outm()+ K' {! o6 o/ b' ^: ^& S) h# Z% h
    12. },
    13. 6 n3 I/ y% R& Y\\" Y; J, A
    14. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482
      & G: r( b\" u7 {4 w1 Y% c9 o
    2.         258.268        255.417        253.738        255.159        253.042
      7 d: X( o& \2 g5 K. e& a
    3.         258.088        252.324        248.927        252.392        247.731
      ' H  W4 d4 [5 s% ^8 l2 Q

    4. ) n' G1 {) K- H# k- |& o9 }$ ^
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。- e! n; w, K# U- |3 i+ D7 k& U$ v2 U

    , I6 Y: ~6 [# n==================
    9 m4 p0 o, E+ R" D! o2 b( B( w0 U% {==================
    4 Q" O* g9 R# W4 l4 K0 X" R4 W& Q* _
    矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。
    & |9 ~" S# B( K  W. T" A/ A" S
    % u3 O& M5 ~- d0 l% ]" bForcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。
    ) w/ Y$ C* z" x+ K: P  x
    6 A0 Z# ?5 r/ L" O: l* [* |除了矩阵运算,Matlab还有许多非语言特性的优势,例如函数图形功能(不包括其GUI,Forcal是嵌入式脚本,C/C++、Delphi等的GUI就是Forcal的GUI)、符号计算功能、控制仿真、金融建模等等。这些实用方便的算法模块使matlab获得了广大用户的青睐。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    0

    主题

    0

    听众

    5

    积分

    升级  0%

    该用户从未签到

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

    使用道具 举报

    alair005        
    头像被屏蔽

    0

    主题

    4

    听众

    782

    积分

    升级  45.5%

  • TA的每日心情

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

    [LV.2]偶尔看看I

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

    使用道具 举报

    0

    主题

    3

    听众

    56

    积分

    升级  53.68%

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

    [LV.3]偶尔看看II

    回复

    使用道具 举报

    8

    主题

    2

    听众

    145

    积分

    升级  22.5%

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

    [LV.4]偶尔看看III

    回复

    使用道具 举报

    chairong 实名认证       

    0

    主题

    3

    听众

    761

    积分

    升级  40.25%

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

    [LV.7]常住居民III

    自我介绍
    抬头吃太阳

    群组岩土力学与地下工程

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-1 01:24 , Processed in 0.434294 second(s), 81 queries .

    回顶部