QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10336|回复: 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 l; d, \; k2 i- f. m5 ?" e- o
    + K! t. u8 J" D; F1 ~
    Matlab 2009a代码及结果:
    1. clear all2 |7 W% c8 j5 _& T$ f
    2. tic
      # a& `  Y0 x+ {1 }
    3. k = zeros(5,5); % //生成5×5全0矩阵
      0 _6 j! {4 @\" `* l4 O9 |5 `  o
    4. % 循环计算以下程序段100000次:
      . k/ q& z3 S( s3 z, i- i
    5. for m = 1:1000001 ?\" m, R. n' {4 B1 p; R
    6.     a = rand(5,7);3 Z' A! A/ X/ {; d6 h9 N. p8 d& B
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化) \/ n( r% H* ~7 H8 P* \. I$ d
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);2 e0 Q- [& u5 r3 @7 L
    9. end! s2 e( s$ X, ^
    10. k1 ^5 S8 ^- b' h+ ~, H+ U
    11. toc8 G# c- v9 T: Y2 D9 z

    12. , ~. K1 @4 T% L3 W  r  [* {+ h
    13. k =; I: H. Z/ x/ E8 k* E  D9 w, k/ N
    14. : u\" `9 r2 {! d0 n1 O) T/ m
    15.   1.0e+005 *5 U9 y$ }/ a- r7 f+ ^4 v

    16. % `; O/ e& O. G% B9 j
    17.     2.7525    2.7559    2.7481    2.7525    2.7511
      \" _1 C\" v1 W) T
    18.     2.7527    2.7535    2.7430    2.7545    2.7484$ Y( ^0 h1 d% w
    19.     2.7493    2.7553    2.7440    2.7513    2.7485
      3 m# \3 n: p# o. y0 P
    20.     2.7481    2.7506    2.7425    2.7457    2.74609 `+ x; x3 g6 N0 }
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      4 O* p) |8 k9 I1 X

    22. . w2 A* ?4 ~3 m9 A9 t
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    2 c8 V  G, E# \5 G  ?" F
    8 q# a- Z1 ]% J" GForcal(OpenFC演示)代码:
    1. !using["math","sys"];0 y; v, X0 B/ _+ W1 K
    2. (:t0,k,i,a,b)=
    3. : P' j3 b! e$ M0 K5 m9 s9 P
    4. {: @8 q6 b$ B' a& B* y
    5.   t0=clock(),
    6. ( _- k' e0 g5 J9 K
    7.   k=zeros[5,5],
    8. ! \. r8 X% o5 {- \
    9.   i=0,(i<100000).while{
    10. 6 x1 V7 V% z  h$ ^# e% e
    11.     oo{: N$ U! H: \3 {3 q) m0 X  H1 b: P
    12.       a=rand[5,7], b=rand[7,5],
    13. 5 M9 \: a0 y. d# J, w% @9 z
    14.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)! R% T/ O/ y$ m' e) S: b
    15.     },
    16. ( w: K$ Q\\" f5 J2 Y
    17.     i++
    18. # ?; r2 c1 K' K0 f. ~( p
    19.   },
    20.   R5 B+ p& o. Q
    21.   k.outm().delete(),+ m( a* j. `  U& p) J
    22.   [clock()-t0]/1000
    23. ' J- C\\" N8 @7 U
    24. };
    结果:
    1.          274978         274892         274913         274949         2749535 S; Y1 P  I' Q4 k6 j' g- K! P7 |+ ~
    2.          274994         275050         275001         275037         274892
        j\" m/ G4 _, o; e5 E; K
    3.          275001         275063         275019         274963         274971
      , V) ~\" ~0 K0 h: q/ e! x: @. |$ N: M
    4.          274945         274999         275017         274983         2749829 A& O/ c\" l2 l) |- a
    5.          275009         274984         274971         274955         274923* i: L\" l3 H/ c  w* N, f

    6. ! R2 P' @\" u9 k1 L3 z/ x+ m
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。2 a3 H4 ]$ p! f. Y

    . \0 p% I0 l# k( w==================3 h( O8 {  N: B
    ==================
    6 x4 q  X. w) H* [$ x& B5 w- F% v6 r+ d4 o5 O
    2、大型矩阵乘9 Z0 m. z% x$ c

      \0 i! ]& C9 z9 T# R) O$ rMatlab 2009a代码及结果:
    1. clear all4 e6 Z* F' l; ?1 c7 C, X
    2. a = rand(1000,1000);6 s$ F1 z4 `5 f5 `6 S
    3. b = rand(1000,1000);
      , N4 T1 }: k$ D$ [4 c: B
    4. tic
      # R' O% J  o5 M% V2 a
    5. k = a * b;( |2 y. |3 Y/ T* P. h
    6. k(1:3, 5:9)1 c: r: y8 G1 ]# L/ B) b
    7. toc4 P9 D: Q9 y- M( x) s

    8. 3 n/ k4 Y3 V' Z( p! V2 ~
    9. ans =
      ) e: H: P5 a( R, O0 J4 h/ r
    10. 6 r/ Q3 W, I# X% V
    11.   246.1003  244.3288  252.9674  258.1527  243.9345
      - \# s* {/ U( m) v
    12.   246.7404  236.1487  249.7140  251.3887  246.0294! Y9 {4 U  L) N# K. H5 d% d
    13.   249.4205  240.5515  252.5847  257.0065  249.71377 s5 q1 }! i' V) t2 r4 {\" G
    14. * O5 [3 Z  ]. g  F* K& O
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================
    8 v; S, a1 R6 o0 A
    7 v) a( p2 W1 m* o; K$ cForcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. 2 a. ?. N9 C5 ]  A6 h/ f8 n! N: O
    3. main(:a,b,k,t0)=, e: T7 k  k  X- H/ R! N( e
    4. oo{
    5. % U% ^- S4 K) p# n( D6 W2 Y( n
    6.   a=rand[1000,1000], b=rand[1000,1000],# D: M\\" D  B* d! I2 w* ]
    7.   t0=clock(),8 F: h$ U6 L1 k; ]$ T/ ]% O
    8.   k=a*b,  //矩阵乘1 O5 n+ O/ D. F3 X; B4 z
    9.   k[1,3:5,9].outm()
    10. : S6 @7 p$ v: a, }
    11. },* }6 c) V; ]8 ]3 _  G( q2 y
    12. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482
      9 ~* Y; C* o! C8 v+ y
    2.         258.268        255.417        253.738        255.159        253.042\" W- c4 t/ p- w7 }
    3.         258.088        252.324        248.927        252.392        247.731( ?6 U; r7 e; T0 L  _. V

    4. 1 [9 V8 Y& }  H0 ^9 G% \' g
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。$ G1 w+ U0 A$ s9 n! S/ N# j

    - [4 o  G! \" G1 [( G: f$ U==================
    0 Y  s/ B, F$ e==================- k$ K* v1 g% T# {, `
    6 a( F4 |2 B" t$ ?3 `9 p2 P/ {$ m3 y
    矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。. j/ I$ U3 g1 {$ |

    : k8 o9 g1 M- v: R2 N. PForcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。/ F8 p) B$ z) ?5 n1 c9 o9 n. D

    1 y9 d, Q0 Y9 V7 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, 2025-11-16 00:13 , Processed in 0.493302 second(s), 84 queries .

    回顶部