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

[dennou-ruby:000076] Re: gtrb & multi-D array



沼口です.

 > たとえば each みたいのを使いたくなることはどうしてもありそうですが
 > このとき、
 > data.each{|x| x**x} 
 > 程度でも、各要素をオブジェクト化する必要があるわけですね。
 > いちばん大きなオーバーヘッドはオブジェクト化なので。

そうですね.このようなことをしなくてもいいように,
ベクトル演算を充実しとかねばなりませんね.
ベクトル計算機でいうところの,リストベクトルを使った演算への
対応も必要でしょう.


 > (1) if の正否で分類してループを二つに再構成
 > (2) それらのループ(分ける前より短くなった:短いループは
 >      ベクトル計算の敵)を実行

最近は,
  (1) if の正否によるマスキングベクトルを作成
  (2) if の正否両方の演算をして(ベクトル長は短くならない),
       マスキングベクトルでマスクして,結果とする
としてるコンパイラが多いから,以前ほど遅くはないのでは?
もちろん,最適なパイプライン演算数のコードを手で書いた場合
に比べたら遅くなると思いますが.

-- 
沼口  敦@北海道大学大学院地球環境科学研究科 大気海洋圏環境科学専攻
tel:011-706-2365 fax:011-706-4865 〒060-0810 札幌市北区北10条西5丁目  
numa@xxxxxx