QQ登录

只需要一步,快速开始

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

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
    7 z6 w4 ^' B- X
    : _5 W5 e% D2 u7 B7 oLuMath 库的数值算法是以矩阵为基础,并进行了运算符重载,具有内存消耗低、执行效率高、代码简洁、实用性强的特点。
    ) o, c0 M2 D2 o9 k* T- T3 g' Y6 Z8 H) M% \$ o9 U+ M" J2 D
    例子:
    % C4 ^) x3 `) Z* v" h  E2 W3 P0 m' J+ t, T" B) R4 f3 x' I8 k2 [9 H
    matlab2009a代码:
    1. clear all7 p+ @6 o0 |* Y/ w
    2. clc
      & T$ D' C; w; o4 F# i; |
    3. tic
      ; `8 a\" i/ q9 Y0 g
    4. k = zeros(5,5); % //生成5×5全0矩阵
      5 |) O% |3 t1 s; V# ?
    5. % 循环计算以下程序段100000次:
      ; H, k( r8 L, N3 h( p/ }
    6. for m = 1:100000
      ' o  {  j, f\" q3 Z7 i: ~
    7.     a = rand(5,7);; Y/ T: S) E% O9 F' S
    8.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化
      \" d8 ?: t: a  ]7 j
    9.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);' T\" i  W3 s0 |
    10. end
      , s. b4 f% ?  o2 }& u& W
    11. k
      9 f* h\" j$ d, y# o! S
    12. toc
    复制代码
    多次运行,结果约为:
    1. k =3 s6 z/ x: u# \3 P4 Q
    2. 5 A/ p# Y, I4 c2 G& n
    3.   1.0e+005 *
      : L5 \; J8 e0 w( T, |5 k1 d9 x
    4. 7 h- Z4 m( I2 }5 P1 M! M
    5.     2.7530    2.7525    2.7509    2.7539    2.7529
      , ^1 i5 Y% o% u5 Z# M6 G
    6.     2.7521    2.7494    2.7493    2.7542    2.7476
      6 `6 G6 f$ {7 W, J+ g; [  f& M+ n
    7.     2.7549    2.7524    2.7527    2.7564    2.7517
      # O9 `. p$ f8 _
    8.     2.7530    2.7523    2.7533    2.7525    2.7502& q7 e3 K1 C/ @/ P+ }0 p
    9.     2.7527    2.7521    2.7505    2.7519    2.7523/ v5 u9 t5 k2 [2 W$ J  G7 g

    10. \" R3 y- Y! R/ c
    11. Elapsed time is 2.126704 seconds.
    复制代码
    Lu代码:
    1. !!!using["math"];
    2. 5 e9 y8 P; h4 J) o1 f5 x8 N
    3. main(:t0,k,i,a,b)=
    4.   y\\" c( e( L! W: M6 v7 K
    5. {
    6. / u6 ^; `: y) `( G
    7.     t0=clock(),
    8. \\" ]  k. [0 w6 t7 h5 ]6 Q/ W3 b! e/ M
    9.     k=zeros(5,5),         //生成5×5矩阵k,初始化为09 V\\" H2 T+ a! C
    10.     i=0,(++i<=100000).while{//循环计算100000次. k/ |+ d, e* V2 i  c
    11.         a=rand(5,7), b=rand(7,5), //生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化9 X/ X\\" l6 U, {4 v; }
    12.         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), `  @6 h+ z! {& m  I
    13.     },
    14. ; P* F  H0 d\\" L6 ^( z
    15.     k.outa(),             //输出矩阵k; B8 ^: ]2 j* n; a: q3 }
    16.     [clock()-t0]/1000.    //得到计算时间,秒6 D1 j\\" F  @0 x4 }4 M
    17. };
    多次运行,结果约为:
    1.          275024         274895         275054         275083         275024
      3 W* [  T( |' V9 V% i  A. G# l
    2.          274965         275036         275091         275112         274931
      7 k& c' u# U5 n
    3.          274975         275012         275020         274963         2749397 W\" a1 S: t' _# g* Q
    4.          274981         274976         275117         275065         2750447 e) r# ~! y0 ^8 f) r# _# h: S2 m& s
    5.          274920         274906         275005         274972         2749208 M8 Q6 a: c: ?- ?2 {- r: K) d
    6. 1.25 秒
    复制代码
    Lu快于matlab的原因应该仍在于内存管理效率较高。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    2#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-5-25 06:26 , Processed in 0.442502 second(s), 56 queries .

    回顶部