请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 7472|回复: 1

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

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

45

主题

3

听众

282

积分

升级  91%

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

    [LV.1]初来乍到

    发表于 2011-11-10 21:43 |显示全部楼层
    |招呼Ta 关注Ta
    Lu数值计算扩展动态库LuMath V1.0:http://www.forcal.net/sysm/lu1/luhtm/lumath.htm
    " J. }( T: N* O+ [( C
    8 E7 `& e1 [1 v/ V  e( _. bLuMath 库的数值算法是以矩阵为基础,并进行了运算符重载,具有内存消耗低、执行效率高、代码简洁、实用性强的特点。
    * g% O4 `; [. I$ Y; U2 Y) U# R, v+ w  l
    例子:5 R' `/ w8 T  e' D  b& R

      g+ y0 f7 Y& P- ~- r& [% h0 Umatlab2009a代码:
    1. clear all* [8 ^9 D1 B1 }
    2. clc
      ) v. J5 s# `7 C
    3. tic
      ) R& I) r, ~. ?' Z; M
    4. k = zeros(5,5); % //生成5×5全0矩阵1 z; D0 t; N( C4 W1 L, Y$ C* x& h
    5. % 循环计算以下程序段100000次:. H( `% @( n/ k& P
    6. for m = 1:1000007 Q3 X3 `' ?. E  ~; N% F4 e7 s0 w( w5 y\" e
    7.     a = rand(5,7);
      . ?7 H- P7 x8 s* T0 q
    8.     b = rand(7,5);%//生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化, k: p\" ~! }9 j, o
    9.     k = k + a * b + a(1:5, 2:6) * b(2:6, 1:5) - a(:, 7) * b(3, :);4 O! H8 J; m% g, X. p3 G% `
    10. end2 D( j4 ]* n; {( U3 V! I
    11. k% {7 ?) J3 ~5 D0 H/ p
    12. toc
    复制代码
    多次运行,结果约为:
    1. k =, Z& o* @: y. n0 V& k$ v- K& C- I

    2. 0 J/ w  _\" \  `* [/ g/ G
    3.   1.0e+005 *
      % h7 H/ Z3 T\" c; o, T

    4. # q- O$ }; A/ S& b$ c
    5.     2.7530    2.7525    2.7509    2.7539    2.7529) B0 h0 U) Y9 f# o7 k+ }2 Y: X
    6.     2.7521    2.7494    2.7493    2.7542    2.7476
      + u/ L6 V. ~, ]  l# [% g+ q- [
    7.     2.7549    2.7524    2.7527    2.7564    2.7517! A( M$ ~$ }; Y- d+ l4 W0 b9 S5 O
    8.     2.7530    2.7523    2.7533    2.7525    2.7502
      2 A; x$ `! s- u% I  e
    9.     2.7527    2.7521    2.7505    2.7519    2.7523: o; m, ]\" G0 v! g
    10. : P7 O) ?+ |; t
    11. Elapsed time is 2.126704 seconds.
    复制代码
    Lu代码:
    1. !!!using["math"];7 o1 ~4 |, }+ _9 s) `7 X
    2. main(:t0,k,i,a,b)=8 Y# |! ~8 Z; t5 i- W) p- [6 O
    3. {
    4. 7 r1 p\\" t; x; L3 Z# L$ G
    5.     t0=clock(),
    6. * w' z; f& S. Y6 Z5 |9 r1 i
    7.     k=zeros(5,5),         //生成5×5矩阵k,初始化为0
    8. # b0 g# K0 z6 u; r9 @3 `
    9.     i=0,(++i<=100000).while{//循环计算100000次
    10. ; ?' Z# l* h4 n9 m/ P1 g
    11.         a=rand(5,7), b=rand(7,5), //生成5×7矩阵a,7×5矩阵b,用0~1之间的随机数初始化: c0 w  b3 ]% \$ I
    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)7 L, Z2 h+ z  T1 \( e
    13.     },8 e# D- J6 @  O9 I& {5 g! v
    14.     k.outa(),             //输出矩阵k
    15. \\" ]\\" D: z8 [0 N/ S- k, R0 B& r
    16.     [clock()-t0]/1000.    //得到计算时间,秒. L9 b: g$ C. q, x
    17. };
    多次运行,结果约为:
    1.          275024         274895         275054         275083         2750245 C' \6 M: ^+ N+ }5 c$ m6 M3 {
    2.          274965         275036         275091         275112         274931  i\" D; Z1 Q5 W+ u# z$ c; v
    3.          274975         275012         275020         274963         274939, L- {/ f. X; S# ~9 T4 s: J' c
    4.          274981         274976         275117         275065         275044; J- t# I: L+ o- |. ?
    5.          274920         274906         275005         274972         274920
      ' Q, I! X5 D7 U, w/ w, g9 U& d# r
    6. 1.25 秒
    复制代码
    Lu快于matlab的原因应该仍在于内存管理效率较高。
    zan
    2#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2024-4-19 07:13 , Processed in 0.457099 second(s), 56 queries .

    回顶部