[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000771] Re: NumArray / NArray



FIP)神代です。遅いレスですみません。

コメントなしで送ってしまったうえに,間違いもあったりして,ゴミを
増やしてしまって申し訳ありませんでした。 m(__)m

これまでの私のメールは忘れていただいて,これを見てください。

■□■□■

堀之内さんにいただいたベンチマークプログラムを実行した結果です。
手元の環境で2通り試してみました。

NArray vs. NumArray です。

結果の数値は,左から
user time  system time  user+system  (really passed time)
を表しています。
四則演算("shisoku")については Fortran90, C と比較できます。
比較には 100*100*100 の3次元配列を使いました(Cだけ 1000,000 の
1次元配列なので単純に比較はできませんが)。

----------------------------------------------------------------
その1:Mobile Pentium III 600MHz (Linux)

#### NArray vs NumArray #### 
shisoku 
  0.220000   0.110000   0.330000 (  0.333320)  <- NArray
  0.390000   0.190000   0.580000 (  0.585586)  <- NumArray (以下同様)
shisoku (with scalar) 
  0.230000   0.070000   0.300000 (  0.298966) 
  0.420000   0.170000   0.590000 (  0.588529) 
shisoku (with scalar, coerced) 
  0.230000   0.100000   0.330000 (  0.331695) 
  0.440000   0.150000   0.590000 (  0.582622) 
math 
  0.830000   0.070000   0.900000 (  0.901456) 
  0.700000   0.150000   0.850000 (  0.849729) 
sum, av, var, rms 
  0.090000   0.000000   0.090000 (  0.093043) 
  0.100000   0.000000   0.100000 (  0.092251) 
max, min, median 
  0.000000   0.000000   0.000000 (  0.000016) 
  0.000000   0.000000   0.000000 (  0.000015) 
transpose 
  0.160000   0.040000   0.200000 (  0.202790) 
  0.570000   0.040000   0.610000 (  0.604540) 

#### shisoku in gcc (10 iterations of +-*/) #### 
 
real    0m1.044s    <- 10回繰り返しているので
user    0m0.950s    <- 上の結果と比較するには
sys     0m0.100s    <- 1/10 する

----------------------------------------------------------------
その2:Alpha21264 667MHz X 2 (Linux)

#### NArray vs NumArray ####
shisoku
  0.177734   0.047852   0.225586 (  0.224674)  <- NArray
  0.236328   0.048828   0.285156 (  0.285238)  <- NumArray (以下同様)
shisoku (with scalar)
  0.203125   0.042969   0.246094 (  0.246164)
  0.205078   0.061523   0.266602 (  0.266678)
shisoku (with scalar, coerced)
  0.173828   0.052734   0.226562 (  0.226627)
  0.207031   0.056641   0.263672 (  0.263747)
math
  1.154297   0.045898   1.200195 (  1.199562)
  1.154297   0.047852   1.202148 (  1.202493)
sum, av, var, rms
  0.068359   0.000000   0.068359 (  0.069356)
  0.044922   0.000000   0.044922 (  0.044934)
max, min, median
  0.000000   0.000000   0.000000 (  0.000000)
  0.000000   0.000000   0.000000 (  0.000000)
transpose
  0.125000   0.011719   0.136719 (  0.136758)
  1.082031   0.011719   1.093750 (  1.093086)

#### shisoku in Compaq Fortran (10 iterations of +-*/) ####

real    0m1.403s    <- 10回繰り返しているので
user    0m1.372s    <- 上の結果と比較するには
sys     0m0.029s    <- 1/10 する
#### shisoku in gcc (10 iterations of +-*/) ####

real    0m0.632s    <- 10回繰り返しているので
user    0m0.598s    <- 上の結果と比較するには
sys     0m0.034s    <- 1/10 する

----------------------------------------------------------------

堀之内さんの結果と合わせて見てみると,四則演算に関して,NumArray
は NArray に比べて遅いようです。プラットホームによって違いますが,
1.2-1.7倍時間がかかっています。
あと,"sum, av, var, rms" の部分では確かに差がつかない(Alpha に
ついては NumArray のほうが良い結果が出ていますね)ので,堀之内さん
ご指摘のように新しいオブジェクトの領域を確保するための時間の差と
いうことなのでしょうか。

配列の大きさを変えたり,いろいろなメソッドを実行させたりして,
同じようなテストをもう少しやってみます。

また,ソースを見て NArray と NumArray の速度差の原因を考察してほ
しい,とのことでしたので,そちらのほうも詳しく見てみます。


-- 
神代  剛 (KOSHIRO Tsuyoshi)  <t.koushiro@xxxxxx> 
富士通エフ・アイ・ピー(株) 環境システム事業推進部 システム部 
勤務先 >> 通信総合研究所 電磁波計測部門 降水レーダグループ 
mailto:koshiro@xxxxxx  TEL:042-327-6880  FAX:042-327-6666