QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 9342|回复: 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、小矩阵大运算量测试
    0 w5 B  j% r$ y* }1 K
    * F& t/ X' O5 H" PMatlab 2009a代码及结果:
    1. clear all
      5 Q0 L1 {+ O\" ~/ Z. A\" C\" ]
    2. tic+ C6 p& T% [\" [
    3. k = zeros(5,5); % //生成5×5全0矩阵% e3 i  _) e- Y% c! b5 J0 P& g
    4. % 循环计算以下程序段100000次:, u8 C4 ~5 Z0 c# D( D$ r
    5. for m = 1:100000  y- \! q; U' @
    6.     a = rand(5,7);& p8 q* t1 b9 w9 d9 H
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      \" o; _% e% G( {0 o: W4 A6 Z0 [
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);, `, v/ `3 j% m& c) X* w
    9. end- U% ?0 s, N: h  O\" Z3 M
    10. k
      , g* k\" ]5 |+ X. E
    11. toc
      1 Z& O: n! I+ x- [# v

    12. 6 L4 C, A5 Q* h' J3 t
    13. k =
      , Q; ]- y5 h: Z7 }

    14. 5 j9 W( G# i\" o: A7 j1 j
    15.   1.0e+005 *
        m* b; _+ P4 x' G. i

    16. - e! k! s2 k* T2 f: G& G7 B
    17.     2.7525    2.7559    2.7481    2.7525    2.7511
      ( x( R- M3 c3 \3 x3 T
    18.     2.7527    2.7535    2.7430    2.7545    2.7484
      / u) X' u' b9 ?& @\" x/ Y
    19.     2.7493    2.7553    2.7440    2.7513    2.7485
      \" X: {! y# @7 ~; I
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      $ E: J, o+ d! e# C  q
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      % M, ]: E0 Y0 `; X* E

    22. 5 U, s& S. Z; f
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================: h3 s# B$ d0 C  m. C2 s" e0 J
    & d% M5 ~# n8 v1 r& t
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];5 T3 K: P1 |& U, u7 b
    2. (:t0,k,i,a,b)=6 }* x/ ~& |\\" w  H
    3. {
    4. ( [% w$ T% W1 T$ q5 X\\" d; w
    5.   t0=clock(),
    6. # y% [1 A4 y# @% L7 F' c# {
    7.   k=zeros[5,5],1 m0 h# L8 m. k3 |. f\\" B, m
    8.   i=0,(i<100000).while{
    9. 9 A% y6 }  E: g8 m
    10.     oo{
    11. $ `- a7 x+ j8 H+ v0 u7 y
    12.       a=rand[5,7], b=rand[7,5],& [# c: k; c' |\\" k) @
    13.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg), g3 e/ K: y6 t
    14.     },
    15. ) p1 _  ?# d# N: ~, X( C% o4 z
    16.     i++
    17. , d2 _; i2 _& B5 S
    18.   },% L& W, a' ^3 D# D7 m/ t% y
    19.   k.outm().delete(),
    20.   k, L) o9 L' Y+ o3 C% Q' R
    21.   [clock()-t0]/1000! F5 }7 t2 C9 J+ m& e\\" E
    22. };
    结果:
    1.          274978         274892         274913         274949         274953$ H9 m* t! r( E0 ?- `& j
    2.          274994         275050         275001         275037         274892
      3 ^* p% ?+ V* ]% e, y9 C\" S3 A
    3.          275001         275063         275019         274963         274971$ J8 y& Q4 ~- M, E
    4.          274945         274999         275017         274983         2749825 C- e; m+ c: o
    5.          275009         274984         274971         274955         274923
      / R+ f* |& g\" W, v' D

    6. 9 l3 [5 ~0 R2 i' V2 _1 v* Z$ T
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。
    . L# r, o6 {5 q% i1 U" @% r8 G: x8 h4 u8 p' B6 {( ^  ^
    ==================
    " G/ d6 `  y! k7 P  A==================/ h( G0 R8 {# G! L/ _' t

    & @. k& _( R! ^8 Y4 N2、大型矩阵乘
    0 f# {0 R3 C8 `$ D
    6 F. E2 j+ {% |' k, ?  I8 ?, A) XMatlab 2009a代码及结果:
    1. clear all
      5 b0 Q2 J: R/ D0 k
    2. a = rand(1000,1000);3 V* G! ^8 A; Y' b0 [% n
    3. b = rand(1000,1000);' Q- A/ @; f/ V. M+ w' u+ S
    4. tic
      : }' @' d; w$ f+ \& o
    5. k = a * b;: x1 B0 |, o: X9 R
    6. k(1:3, 5:9)
      ) c& S% {6 I2 O1 \. M) `( z
    7. toc
      : N& q1 v5 n: D# Q) z

    8. 5 V* S- V* L! U
    9. ans =& ]. V; x. q  p. e! K& m# s

    10. ; o* W! R8 V0 Z$ A4 u, @
    11.   246.1003  244.3288  252.9674  258.1527  243.9345
      3 F5 ]( v/ a- o  c
    12.   246.7404  236.1487  249.7140  251.3887  246.0294
      8 \2 `! ~! E! |( I
    13.   249.4205  240.5515  252.5847  257.0065  249.71376 T9 |' X+ G5 s4 u* k
    14. 6 K( t6 u\" M\" F
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================" J( i) L# Z2 U- X/ H

    # g  L( n0 E5 Z+ p( }Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. / `; I& j2 |' o& L+ z2 |4 `7 d, K
    3. main(:a,b,k,t0)=$ ?8 Z( T& r) G( P$ t
    4. oo{4 E0 U8 p2 S& P\\" P\\" n8 i
    5.   a=rand[1000,1000], b=rand[1000,1000],
    6. . @7 _1 U- v% p5 X
    7.   t0=clock(),  ]% U8 w! ^- v8 T9 L6 j
    8.   k=a*b,  //矩阵乘
    9. 8 G6 e$ J7 p; e. y2 a5 k4 P# g2 o' h, ^
    10.   k[1,3:5,9].outm()' _; O6 j7 E/ E& X
    11. },
    12. 4 e0 ]9 k  I0 Z6 ^
    13. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482
      $ B/ y: n2 p\" N+ ^
    2.         258.268        255.417        253.738        255.159        253.042# e) j! D9 k7 g
    3.         258.088        252.324        248.927        252.392        247.731
      , ^! I7 n  [\" ^) Y9 V4 U2 [/ j
    4. 5 X1 q3 H1 f1 t7 l- H3 V
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。
      R) y# p7 u* V' D+ a. D# q2 A( L6 Y/ v% t* e7 u# \
    ==================$ D8 T- w2 z/ l+ g2 G8 D
    ==================
    - b: r9 V! O  C1 I4 _1 M8 C+ Z4 b" |( o4 `6 t
    矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。
    * a" D8 ?  u1 e* ]2 Q% x- E, x+ I5 D4 I# N4 G/ o$ h
    Forcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。1 K# |/ M7 m' v* S$ j
    5 V7 m; Z" ^% c7 C! 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, 2024-6-11 10:29 , Processed in 0.928412 second(s), 85 queries .

    回顶部