QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10776|回复: 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、小矩阵大运算量测试3 U% Y. p/ B0 |& O
    6 x; ^1 h; U2 F3 L8 f$ x/ O
    Matlab 2009a代码及结果:
    1. clear all- F9 |7 c9 Q  n0 `. I: F
    2. tic* u& W1 D* b& l0 [7 `$ F
    3. k = zeros(5,5); % //生成5×5全0矩阵  L& c9 Z; v0 r8 y
    4. % 循环计算以下程序段100000次:
      0 e# _6 Y3 V7 |/ M; O
    5. for m = 1:100000
      8 M# g$ x) J1 w: O/ e+ c* o3 E
    6.     a = rand(5,7);& I; A8 r8 F\" v) g
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
        s. Q$ c: ]9 @7 Y  J* L3 R, G' `
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
      - e5 z# l3 G* ]8 ]6 d8 W
    9. end, f8 X  n: H\" U( d
    10. k
      ! X: N8 R+ u5 G\" y& f
    11. toc
      6 W0 {% Q2 B* ^

    12. 2 B# _4 K8 f: s( q
    13. k =+ i7 }( H( U7 b
    14. ) m% |5 G9 h- S7 N( k! G
    15.   1.0e+005 *  J( `) ^# U' `6 h& R

    16. . l; Q; G0 r4 }\" E1 a$ m  p0 `
    17.     2.7525    2.7559    2.7481    2.7525    2.7511; [' ~. s9 e/ ?0 U. b9 W- G- S
    18.     2.7527    2.7535    2.7430    2.7545    2.7484* ^2 ~4 i% a& u' w
    19.     2.7493    2.7553    2.7440    2.7513    2.7485
      ' B; ~/ ^5 ]; g6 M3 a1 Y, T
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      8 i+ V' b9 a5 q4 v: d# p! E: `
    21.     2.7506    2.7525    2.7429    2.7488    2.7451! j) P\" \/ o6 v\" B. `8 l) }. p
    22. 5 d) q8 I. [7 [0 H2 e# g0 a4 U
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    $ B$ X1 T: E- a7 I9 F
    3 n) L: x$ V2 n4 ?# lForcal(OpenFC演示)代码:
    1. !using["math","sys"];2 o0 i3 k+ ~0 A\\" o% W! e( U7 j
    2. (:t0,k,i,a,b)=3 K6 c' s5 H/ C; p& z, w
    3. {) q8 M, U; [0 |' S+ L  E/ x
    4.   t0=clock(),
    5. # X3 m( j# f! ^7 ?
    6.   k=zeros[5,5],
    7. 4 v: C8 \& M5 `
    8.   i=0,(i<100000).while{$ r2 r: H3 Y/ d% @  h: E
    9.     oo{
    10. ) c6 o6 H2 F0 U/ o. T
    11.       a=rand[5,7], b=rand[7,5],1 ]$ r6 V7 k* i! _) k/ v  `
    12.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)
    13.   G( u\\" j+ Q$ H# q5 F1 i
    14.     },
    15. : X. `9 c3 ]$ c1 V/ W9 d8 M' J
    16.     i++
    17. 9 N, j7 [& _  t- P* _
    18.   },
    19. ; N# m\\" W+ P' y/ H$ z4 I
    20.   k.outm().delete(),6 y5 W2 s: \& N: }* h& u
    21.   [clock()-t0]/1000  i- B+ B7 f) m. H) s+ D
    22. };
    结果:
    1.          274978         274892         274913         274949         274953
      / `9 U+ d& w/ |3 {
    2.          274994         275050         275001         275037         274892
      9 l2 P) Q4 k  b1 B0 Q8 L
    3.          275001         275063         275019         274963         274971, z1 w9 v6 A  n* f, c* z6 j
    4.          274945         274999         275017         274983         274982
      0 [5 E, [6 o( e6 T5 _
    5.          275009         274984         274971         274955         274923. p: |. y% d+ U( y8 C4 I. w
    6. : _- s9 ]8 c5 i+ R' c0 _
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。
    7 ]0 v6 B% t. U# o, h' a2 D$ i, Y* q+ p- w0 q* V
    ==================
    " F8 N7 `7 U8 v" J7 W) }/ X==================
    - M" x5 O( u+ ~  b3 G  d" T1 @) A5 u- N( W* U& |1 ]
    2、大型矩阵乘$ U; \1 x" x6 }
    & n) z( \1 _* l' p$ n$ V/ M7 A" N0 c3 _
    Matlab 2009a代码及结果:
    1. clear all
        \5 Q6 |# M3 l# c( X
    2. a = rand(1000,1000);/ M- x; b3 e! V$ S6 [$ Y
    3. b = rand(1000,1000);* M, g& Z. X1 t8 w$ ?
    4. tic! ?$ j. Z: J: A- ]* k7 X
    5. k = a * b;9 |7 A7 n: q% v8 Q; ^! e* D
    6. k(1:3, 5:9)\" b2 p+ _, F$ v2 E+ j; ?/ j
    7. toc
      2 D# ^& R0 C* C! _5 a  a7 d' l
    8. ! P4 x  x2 R$ x9 J
    9. ans =
      * ^: q\" g. P( n\" y7 d. J' g

    10. & `3 |# v\" i3 y# v8 M6 k
    11.   246.1003  244.3288  252.9674  258.1527  243.9345  ~8 K, p' D/ C% V
    12.   246.7404  236.1487  249.7140  251.3887  246.0294
      : L5 {9 }! @7 V8 j: H; C4 i7 ]% R
    13.   249.4205  240.5515  252.5847  257.0065  249.7137
      9 p+ o- ~1 p, M; b\" l, ?) k

    14. / [) x\" Z! u7 H4 e2 w
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================% E/ j& @& u( h' P, I% |) U
    " D/ R9 k) b! P4 N0 ?( s+ i0 q
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. , p* v  l$ h; T- m
    3. main(:a,b,k,t0)=  I4 z# \! A$ r4 H
    4. oo{0 Q' {% v+ ?+ o3 a
    5.   a=rand[1000,1000], b=rand[1000,1000],! S/ {0 S. H7 X8 w& E
    6.   t0=clock(),
    7. 0 \8 z- [/ g# u2 y
    8.   k=a*b,  //矩阵乘
    9. - h2 S4 I8 ~\\" o! U. {
    10.   k[1,3:5,9].outm()
    11. # I( j/ r5 R9 m. L9 N
    12. },
    13. % m$ B  z# C! y& h  K9 d' w
    14. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482* {7 w3 i% k0 k: F' Y: D2 m( ^1 V
    2.         258.268        255.417        253.738        255.159        253.042
      1 B3 E# V3 Z8 c: ~
    3.         258.088        252.324        248.927        252.392        247.7312 ]$ L) Y  D& _/ ]

    4. 2 o) J  B/ @/ M2 j' b* c% ~: d! R
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。1 U: ?9 Y7 J3 W

    2 n: y7 A# x) L5 ]% H==================
    / {  ?; `6 d4 f: G' x==================  R5 f1 Q) [# @, L5 d7 ~/ M
    / B* _, n% |0 b$ A) T) w
    矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。; b7 g' {; m, U
    ' n' g9 d, t9 V  u
    Forcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。$ j) W! N9 N  t. V% f7 \3 p
    $ p- ~; h; q; {# q# U+ Z- D
    除了矩阵运算,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-9-1 03:57 , Processed in 0.468250 second(s), 84 queries .

    回顶部