QQ登录

只需要一步,快速开始

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

Lu数值计算扩展动态库LuMath & 小矩阵大运算量效率测试

[复制链接]
字体大小: 正常 放大
forcal 实名认证       

45

主题

3

听众

282

积分

升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2011-11-10 21:43 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    Lu数值计算扩展动态库LuMath V1.0:http://www.forcal.net/sysm/lu1/luhtm/lumath.htm+ [$ \" q5 O5 ^! ~
    ; u# M) V2 @* x1 d+ a
    LuMath 库的数值算法是以矩阵为基础,并进行了运算符重载,具有内存消耗低、执行效率高、代码简洁、实用性强的特点。
    ) m. q6 Z/ ^' E
    - H# O" F( C" z8 }; L例子:
    $ o1 _, }. C$ o4 E2 Z; ^$ ~1 M1 O  Q! ~0 w  o2 S3 {- z0 S# U% Y/ }, [4 r
    matlab2009a代码:
    1. clear all+ N3 P( }) b( B$ J( ?% c9 x5 Q# M
    2. clc
      3 d9 K# \: P' c! W4 O
    3. tic
      , f  n% K* g# P! K( B0 o
    4. k = zeros(5,5); % //生成5×5全0矩阵' g, p# W! x+ }- w0 M+ n
    5. % 循环计算以下程序段100000次:
      $ O+ K4 ]+ [( U
    6. for m = 1:1000003 K8 m- u  {- t8 C\" y9 B2 ~9 B
    7.     a = rand(5,7);
      # X# v\" M8 ^, B% K! G3 q
    8.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化& ]3 J  k* J! |1 E' E2 r8 _% ^' P
    9.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);
      * W( m\" l4 q1 K& @
    10. end0 T$ F0 O+ Y, Y0 c
    11. k3 s0 E9 A- q! x0 c, b1 I9 K5 J
    12. toc
    复制代码
    多次运行,结果约为:
    1. k =
      & X7 c' C  M# z. j$ B7 B% V# Y

    2. ( M+ p\" y+ J- ]4 M3 n
    3.   1.0e+005 *
      - E/ ], `  r, z  _) r
    4. 4 z7 U) s* v6 A\" K+ `7 D
    5.     2.7530    2.7525    2.7509    2.7539    2.7529: o* U\" C% R1 J6 o* m3 B
    6.     2.7521    2.7494    2.7493    2.7542    2.74766 `+ N2 W* E$ S& [0 q0 v
    7.     2.7549    2.7524    2.7527    2.7564    2.7517
      / E* N. n$ L. x* s/ J5 S+ P
    8.     2.7530    2.7523    2.7533    2.7525    2.7502
      - M6 R4 c- e' Y9 R3 o3 I2 h, B0 f
    9.     2.7527    2.7521    2.7505    2.7519    2.7523' X, D  z+ Z$ {; ?* d% \  d
    10. ) c# S9 f, c5 a\" x\" g
    11. Elapsed time is 2.126704 seconds.
    复制代码
    Lu代码:
    1. !!!using["math"];
    2. 5 u, |; u- Q4 a; u
    3. main(:t0,k,i,a,b)=
    4. % W1 Q! _7 {! a\\" ~0 H( G
    5. {
    6. ! T0 S: Q  I6 ?) n8 R: Y( _4 e
    7.     t0=clock(),4 i1 z! S. R7 @% j5 k& F: s: e
    8.     k=zeros(5,5),         //生成5×5矩阵k,初始化为0( k3 j  {$ w( ?8 r% t% s
    9.     i=0,(++i<=100000).while{//循环计算100000次( n: e  U  D  \4 B% w. [& y% B
    10.         a=rand(5,7), b=rand(7,5), //生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化$ K. W0 z1 e3 u8 Q6 J. f
    11.         k.=k+a*b+a(0,4:1,5)*b(1,5:0,4)-a(all:6)*b(2:all) //计算k=k+a*b+a(0,4:1,5)*b(1,5:0,4)+a(all:6)*b(3:all)! s1 K1 @) r4 ?5 J* l% r3 F
    12.     },
    13. / y2 H' J+ A- I. L
    14.     k.outa(),             //输出矩阵k6 u' V( F) r( q1 |
    15.     [clock()-t0]/1000.    //得到计算时间,秒
    16.   u* T; e\\" t; B0 L: G8 @
    17. };
    多次运行,结果约为:
    1.          275024         274895         275054         275083         275024
      6 ^* x$ d9 |1 a7 k- E7 p5 G
    2.          274965         275036         275091         275112         274931
      6 i, V8 Q* y. g
    3.          274975         275012         275020         274963         274939  L) c6 b; u7 s) A# b. w* v
    4.          274981         274976         275117         275065         275044
      % g4 F  `* d' e, V( W
    5.          274920         274906         275005         274972         274920; E! g2 V$ e- n% \' p+ ~- e& Z
    6. 1.25 秒
    复制代码
    Lu快于matlab的原因应该仍在于内存管理效率较高。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-11-15 22:18 , Processed in 0.338791 second(s), 48 queries .

    回顶部