[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