QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10775|回复: 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、小矩阵大运算量测试% w5 Y- u, p5 z8 W' @0 {, q

    , u* D3 n" x% n& ]( N9 v3 t  h1 ^Matlab 2009a代码及结果:
    1. clear all! W  T5 B& R$ \' p/ W8 {+ F
    2. tic
      & k6 P( p) b) D# a. f- ^
    3. k = zeros(5,5); % //生成5×5全0矩阵. ~9 N% M! }! R7 Q9 N
    4. % 循环计算以下程序段100000次:! l4 u$ ^# j8 S* z1 G; ?
    5. for m = 1:100000# ]! j4 c1 a# d' L
    6.     a = rand(5,7);
      9 E: D  c0 A  d  j\" R0 z
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      * g8 R: j0 ^/ X; A\" I\" S: W
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
      * Q1 N4 N. P9 W. z- p3 K% h0 K
    9. end' E- c, f6 M8 b. S
    10. k6 L' H( R( L3 {
    11. toc5 d) m6 d/ y0 o7 g; `& N1 F# M

    12. % t* e4 M; p7 ]7 N* u+ o# i. a
    13. k =
      + c  S\" T* Z6 a$ o4 k9 u

    14.   x* [0 Y+ b# u. F* j% M
    15.   1.0e+005 *. K& u, B  v: [* o\" X' t

    16. ; @8 V# ~\" p. B7 `6 B
    17.     2.7525    2.7559    2.7481    2.7525    2.75113 @' i$ h0 t1 N5 w7 m+ {
    18.     2.7527    2.7535    2.7430    2.7545    2.7484\" |; e8 z) L$ u* T: |0 W( L9 |\" g
    19.     2.7493    2.7553    2.7440    2.7513    2.7485( ^3 {8 S( T\" f5 l' D
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      ; G% [! m) \: s
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      \" }( q4 y: K2 W! o5 v( i$ i
    22. ' R) O& d# c/ f0 s5 Z) ~! d4 [
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================
    8 R* s- E* z& a! I% x  T9 X* x( p3 S( K7 \. d- j. {% t2 c
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];
    2. / Q6 c2 m  P* z$ V\\" v% W
    3. (:t0,k,i,a,b)=
    4. 0 m\\" Q; E- |* h* @
    5. {
    6. & R' s, U9 E9 y& _: S7 V, w
    7.   t0=clock(),
    8. 7 l3 w% F( {7 n! V/ P! M/ r+ k
    9.   k=zeros[5,5],
    10. . J\\" z2 O* P/ a0 I
    11.   i=0,(i<100000).while{! l* [( Y* G; H# Q0 ~8 d1 O( p. X0 o
    12.     oo{* ^4 ~5 n) u. ~5 R2 r' y! j1 P2 I# s
    13.       a=rand[5,7], b=rand[7,5],& Q( ~$ X2 S6 F6 O
    14.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg): g# G5 C0 V. Y# c) f) H
    15.     },2 t3 U* Z* [  G( Z: b
    16.     i++
    17. 9 w0 W4 W7 U* V6 t; g- C1 V
    18.   },8 r* O3 R9 F. y8 v+ W7 \7 G
    19.   k.outm().delete(),. |9 E9 T# n: u9 o! J. l
    20.   [clock()-t0]/1000
    21. # t6 e3 ]$ q3 ^! F, Z* z# f
    22. };
    结果:
    1.          274978         274892         274913         274949         274953
      3 o; K- B- y8 E
    2.          274994         275050         275001         275037         2748924 A/ M. f1 {( t, O' n' j\" [
    3.          275001         275063         275019         274963         2749716 R) |4 v0 i' |; v5 l( _* [) D
    4.          274945         274999         275017         274983         274982) |% o1 `7 d% H. g* \: e6 W( ]
    5.          275009         274984         274971         274955         274923
      \" h' W5 T\" R3 \+ W. }

    6. 4 p6 C! N\" }( C5 G
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。2 q" Z' r" U4 j7 s5 b
    ( z( N* O& a  x" D  K% k* h) E
    ==================5 B; E* R6 u" {2 ~
    ==================
    5 j' o; R+ L: ]9 i
    + Z! r; T, ?: M2 r/ Y) ?2、大型矩阵乘, j) |$ ?' U0 L1 Z7 w. u% K( g

    ; v7 m5 l5 y- B  ]8 n5 u- yMatlab 2009a代码及结果:
    1. clear all, F* k: O; ^$ g( r
    2. a = rand(1000,1000);! x: x1 `! `# b2 k
    3. b = rand(1000,1000);( t* A& O1 r1 G3 v4 d8 W5 `
    4. tic) \' n! C' Q0 c/ L8 c
    5. k = a * b;
      8 `& r. E1 n0 ?
    6. k(1:3, 5:9)+ D9 i8 N0 ~$ ]# x) N) b  _; s
    7. toc
      \" n+ W( i7 B# C1 R/ C. V# M2 f

    8. . J8 h) i\" m) m7 l
    9. ans =\" Z3 O( o# d& q

    10. ) _# g  o1 |% K7 a\" N0 ~
    11.   246.1003  244.3288  252.9674  258.1527  243.9345% j# J' [' b- D6 U4 M3 F
    12.   246.7404  236.1487  249.7140  251.3887  246.0294$ D* {2 E+ @/ W4 \% I
    13.   249.4205  240.5515  252.5847  257.0065  249.71371 r. l3 U) W, M; G! d; i: }

    14. ( m, \/ Q+ K8 T3 I  K7 L$ Z) a
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================9 p) b, y  [5 L# x

    7 q' {5 D6 a! F2 N7 f1 WForcal(OpenFC演示)代码:
    1. !using["math","sys"];0 k+ m- m* i8 s
    2. main(:a,b,k,t0)=6 f2 U+ v8 {8 x( g/ ?. [# j. Z
    3. oo{
    4. 0 M' D% [* S/ f0 D' @6 l$ T
    5.   a=rand[1000,1000], b=rand[1000,1000],
    6. 6 ?* ~9 u' Y% s8 X/ t3 J- b& u! h
    7.   t0=clock(),
    8. 1 f# ~8 ]5 N+ n( O2 ^! w; \' g
    9.   k=a*b,  //矩阵乘  a# W5 B' N# L' ^
    10.   k[1,3:5,9].outm()4 R1 n+ c, f0 P( |! ]% I
    11. },
    12. 9 E& U, `! @3 b* i! q
    13. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.482
      8 q$ z4 f% G5 j( i
    2.         258.268        255.417        253.738        255.159        253.042
      % L- d/ ^& H% Z3 ?9 d# D6 `6 j
    3.         258.088        252.324        248.927        252.392        247.731
      7 S  j% h: K$ [4 @9 f: Z2 D

    4. ( _3 J. Z: N7 [* h
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。/ ~7 i, l8 u& H9 L8 c. ?% P

    4 f8 T0 n: o  k==================1 m3 z3 V$ m% p& E, q' M
    ==================4 v3 p  Q* E! r* S1 L
    5 T6 X4 P. j* c
    矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。4 r# ^/ S8 J1 r  r8 B; [& g
    8 T- h4 U* L2 k
    Forcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。
    " B  v8 o5 w. E! n& W9 p) G
    9 ?# w6 [* i. c9 w* r除了矩阵运算,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:22 , Processed in 1.679017 second(s), 84 queries .

    回顶部