QQ登录

只需要一步,快速开始

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

极限测试之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 |! M$ J$ V1 C) P
    ) O! F2 U) {: }1 sMatlab 2009a代码及结果:
    1. clear all! M0 q7 J( l) g0 _
    2. tic
      # i* a5 y8 w' J4 w. j. h0 t: ~
    3. k = zeros(5,5); % //生成5×5全0矩阵
      % w& e\" a2 d/ }* v& L( w; Y
    4. % 循环计算以下程序段100000次:
      ' a1 ]; }1 N* D
    5. for m = 1:100000
        n! u\" M1 {! d# v# P/ y1 s+ Z
    6.     a = rand(5,7);
      . y) y# |# ?) |) C
    7.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      ! n! ~2 [; S6 w8 n
    8.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);$ J: K/ q0 {' ?
    9. end
      5 K$ C1 s9 ~5 m+ a4 O& j
    10. k
      1 G\" N9 w  c+ P/ B4 Y4 ~2 }$ u! i3 W
    11. toc
      4 U1 n\" C, I  ~3 G

    12. + [0 `. I5 `0 A6 T* y
    13. k =
      ; V1 j/ m9 v9 s8 t9 V4 F& y% o
    14. 5 L# Y- q9 H% R0 ]# V; G) o( M5 K
    15.   1.0e+005 *
      3 |% E: F! Z( P5 ^

    16. % x4 i' c8 A' z
    17.     2.7525    2.7559    2.7481    2.7525    2.7511
      . g' f! m. G. b9 C% b9 M2 J0 R
    18.     2.7527    2.7535    2.7430    2.7545    2.7484/ J9 a% R( q! `) D7 a' f+ u
    19.     2.7493    2.7553    2.7440    2.7513    2.7485  l: l\" X: O6 M& W  v+ a/ [) h
    20.     2.7481    2.7506    2.7425    2.7457    2.7460
      7 E. W3 X$ Z' B
    21.     2.7506    2.7525    2.7429    2.7488    2.7451
      + Q, N+ ?, |7 {, S1 z! p9 E
    22. ; G( A# J! _4 @6 Q* B
    23. Elapsed time is 1.979852 seconds.
    复制代码
    ===================* |' \5 K( ^) @/ S+ s2 y
    - [9 _5 G0 C& E/ j! F# {
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];6 ^- {% s. \1 R' }0 B, b
    2. (:t0,k,i,a,b)=* S6 @/ K# Y$ }5 n
    3. {
    4. 6 M2 t) _# K. n! g
    5.   t0=clock(),5 e& j3 |2 n  T0 i8 \* n/ T
    6.   k=zeros[5,5],
    7. 5 ^- C7 o4 r0 d! A
    8.   i=0,(i<100000).while{
    9. ( B- _+ \+ C/ ^0 L
    10.     oo{\\" k  |+ j4 x, X2 \
    11.       a=rand[5,7], b=rand[7,5],# |! P$ c# D5 v
    12.       k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(neg:6)*b(3:neg)8 L0 r, t0 _2 b, s* t9 l- f
    13.     },
    14. 0 o7 [1 x: c! x4 V/ i
    15.     i++
    16. , A5 I9 x+ H0 y6 z  i- f
    17.   },7 B# `* h9 ?. t/ T
    18.   k.outm().delete(),
    19. 7 s, b, \1 c: Y
    20.   [clock()-t0]/10000 I( u+ w( R) o8 f6 w3 x' f
    21. };
    结果:
    1.          274978         274892         274913         274949         2749531 Q3 ~\" h\" M! y: x% g) m
    2.          274994         275050         275001         275037         274892
      & h( ]8 z9 s9 s. i* n# ^8 J1 v
    3.          275001         275063         275019         274963         274971
      & ~: A) z9 c) h! j- D1 W
    4.          274945         274999         275017         274983         274982
      ) r, z' n9 y) l  [
    5.          275009         274984         274971         274955         2749233 t3 @# d# T# t; E5 s$ X' N

    6. * h8 B1 I* {6 z\" [, {- Z4 u
    7. 3.516  秒
    复制代码
    此类运算Forcal的效率有Matlab的一半稍多一点。- w* D* V; S2 z; K6 }) m. ]

    ; s1 H% B. g+ E! X==================
    9 D9 B$ S1 K0 I8 |3 m: X. W2 ?' |==================; \9 U. m  \/ m, B5 z; S5 D
    8 D! T4 v1 C$ P% @4 u0 b
    2、大型矩阵乘; X. Y0 T- [  }$ k+ F% |
    8 f4 h) }8 }/ }; S
    Matlab 2009a代码及结果:
    1. clear all
      9 t\" r( e8 P5 l4 ^( f3 b0 b$ G
    2. a = rand(1000,1000);
      * I6 C8 u9 }2 o5 ]2 C
    3. b = rand(1000,1000);
      + b0 h3 ^2 f- X6 t
    4. tic
      1 R$ w6 o* h% b# r& [, {  A' d
    5. k = a * b;
        E5 m. `6 W! D+ I; c( @
    6. k(1:3, 5:9)' {7 l& P8 }  q; v7 y5 I6 q
    7. toc
      . W* e% u4 _\" w2 Z0 E. E% Q
    8. 0 E/ M( Z9 g, Y$ X; W# _\" F
    9. ans =% L\" r' I, @3 F, U  h$ j0 v$ V- ^
    10. \" `' c- L1 I$ C
    11.   246.1003  244.3288  252.9674  258.1527  243.9345  @' k* A9 G4 |# z
    12.   246.7404  236.1487  249.7140  251.3887  246.0294
      3 m- U1 S1 O: @
    13.   249.4205  240.5515  252.5847  257.0065  249.71371 @3 g1 Q! ^7 X+ n1 b
    14. 8 K6 ]& o1 r, k1 X
    15. Elapsed time is 0.310022 seconds.
    复制代码
    ===================* J+ }6 U$ k; f9 \8 W4 m3 r. G* d
    1 Q# P- H; |/ ^7 U2 M
    Forcal(OpenFC演示)代码:
    1. !using["math","sys"];: p* ^9 ?% B4 V. ~
    2. main(:a,b,k,t0)=
    3. 5 q+ e& m' [9 z- ?, s
    4. oo{
    5. ! P: A7 N  B  }! }: k2 E9 d
    6.   a=rand[1000,1000], b=rand[1000,1000],
    7. 9 R1 J0 J! ~: M. q8 M: r
    8.   t0=clock(),  L  N\\" q1 E: U  `\\" L0 N3 M( O/ Y
    9.   k=a*b,  //矩阵乘6 K9 P5 J2 W, [8 J4 S8 F
    10.   k[1,3:5,9].outm()
    11. % I\\" K- u4 T; ~8 A' H, ?
    12. },
    13. # @% V# Z# `' {2 x' z' s8 r
    14. [clock()-t0]/1000;
    结果:
    1.         247.009        245.731        242.454        247.412        244.4822 J  D; v\" b8 E2 Q) E
    2.         258.268        255.417        253.738        255.159        253.042) a& Y) z& y( p9 ^% k& I& r
    3.         258.088        252.324        248.927        252.392        247.731
      \" H8 f; U2 a& L4 _# k7 H0 {% e

    4. 7 u- p% w# e8 D/ k# w
    5. 2.25
    复制代码
    此类运算Matlab的速度约是Forcal的7倍多。3 e4 h4 i* P1 H: o# `% `
    " k/ J+ v8 G. q4 F; c& _7 C7 C
    ==================# \' q) |/ d8 ~2 E* Z
    ==================' ^: f: S2 u* r% e  \2 j3 P

    , {* {1 Z: q1 F9 @2 R) |矩阵运算是Matlab的优势。不过,个人认为,矩阵计算速度取决于算法,矩阵算法只是众多数值算法的一种,不属于语言的基本特性。然而,拥有高效的矩阵算法是matlab的骄傲,就像优化算法是1stopt的骄傲一样。
    0 J* p& q% s) a9 V* ]0 b% F
    2 m$ Y' Q' |# c5 G7 G) kForcal的矩阵乘是用普通的矩阵乘经过改进而成的,效率自然低,但所有的数值算法包括矩阵运算是由Forcal扩展库实现的,只要有高效的算法,Forcal便可大展身手,为所有这些算法提高更高效的服务。8 h; ~" G- S8 ]6 l( a" K
    ( ^1 C* B3 S; b& d: L4 e
    除了矩阵运算,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

    回复

    使用道具 举报

    5#
    无效楼层,该帖已经被删除
    alair005        
    头像被屏蔽

    0

    主题

    4

    听众

    782

    积分

    升级  45.5%

  • TA的每日心情

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

    [LV.2]偶尔看看I

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

    使用道具 举报

    7#
    无效楼层,该帖已经被删除

    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-5-2 01:10 , Processed in 0.728429 second(s), 94 queries .

    回顶部