QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8379|回复: 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! [: w$ V. Q: X8 p; |0 S

    2 M) w5 T7 j, p0 k5 l$ r9 ALuMath 库的数值算法是以矩阵为基础,并进行了运算符重载,具有内存消耗低、执行效率高、代码简洁、实用性强的特点。
    ( \' u1 z; T7 E" f
    + K% y! h, U# ?" x. H8 O例子:
    , X. ?0 k  V: r/ `/ v! m1 x$ j* i0 V7 \) _# B% u6 W
    matlab2009a代码:
    1. clear all
      % K9 x1 i. i9 E\" z# K  t* e' m\" p9 f
    2. clc
      2 N! ~8 o- v2 `5 S
    3. tic# F7 z4 D' b7 ^+ G; X7 F) N
    4. k = zeros(5,5); % //生成5×5全0矩阵
      / f& k( D5 }5 `+ C* U% e+ L' T1 F2 ?3 p
    5. % 循环计算以下程序段100000次:% G' K- o; X3 H+ F
    6. for m = 1:100000\" E# e, z  G! W- L
    7.     a = rand(5,7);
      1 C2 c0 c4 N9 `. b- V4 \( r/ O9 [; y
    8.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化: s+ j0 J# J6 \' W0 v3 b& l3 J
    9.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);3 ~9 n6 F6 V/ d  r\" N- h3 H) q
    10. end
      : ]. @! _/ e' f; m4 m+ X
    11. k
      ! c& R$ V5 @& Y2 M
    12. toc
    复制代码
    多次运行,结果约为:
    1. k =
      : d5 m\" ~. k( A5 V
    2. + T9 k8 [8 T  E6 i; }! E
    3.   1.0e+005 *% M\" J- s1 m3 Y

    4. 9 Z7 y0 q+ q% ]4 }
    5.     2.7530    2.7525    2.7509    2.7539    2.7529
        b; r$ ]/ R+ V: {8 D# m
    6.     2.7521    2.7494    2.7493    2.7542    2.7476
      + q1 ~2 h& v+ ?
    7.     2.7549    2.7524    2.7527    2.7564    2.7517
        a: J1 m5 _4 h4 M0 t
    8.     2.7530    2.7523    2.7533    2.7525    2.7502
      7 `4 g3 w5 c4 E! |
    9.     2.7527    2.7521    2.7505    2.7519    2.7523
      6 m& W% k. I/ H) W

    10. ' d( J4 u  v; Q, E& o; K+ ^5 X
    11. Elapsed time is 2.126704 seconds.
    复制代码
    Lu代码:
    1. !!!using["math"];
    2. . U3 |7 w! ]8 n
    3. main(:t0,k,i,a,b)=
    4. 7 ?9 s/ C! ~. m3 ^2 w+ ~
    5. {( B0 g5 c7 C& D' O8 \7 V
    6.     t0=clock(),
    7. , D. x# g6 g  f5 z$ r2 _/ O! E
    8.     k=zeros(5,5),         //生成5×5矩阵k,初始化为0/ ~8 U4 W& X\\" ^6 k
    9.     i=0,(++i<=100000).while{//循环计算100000次, n( @  M% J6 U) k! T) n
    10.         a=rand(5,7), b=rand(7,5), //生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化7 Q% [8 ?$ T+ Q' Q3 X0 v2 H& y
    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)
    12. ' T! |7 y; e& P* g\\" w' I7 {
    13.     },
    14. ; C  C9 _+ q0 c\\" u# d
    15.     k.outa(),             //输出矩阵k
    16. 5 f+ U8 \5 ]7 }7 X# I# d
    17.     [clock()-t0]/1000.    //得到计算时间,秒
    18. / C: G% n( l! r8 e
    19. };
    多次运行,结果约为:
    1.          275024         274895         275054         275083         275024# v! D- o9 p' D9 p. J4 x9 }
    2.          274965         275036         275091         275112         274931
      - N\" \/ O% N. F, O! R
    3.          274975         275012         275020         274963         2749398 t) e/ c5 M; ^& [( Q+ p. d
    4.          274981         274976         275117         275065         275044
      * z  C( _' G6 q7 ]: l) k: G
    5.          274920         274906         275005         274972         274920) z2 F; e8 N) W  J% b
    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-7-7 08:21 , Processed in 0.412082 second(s), 48 queries .

    回顶部