私は、行列/ベクトル計算で膨大なスピードアップを得るために式テンプレートを使用するC++ライブラリEigenにかなり感心しています。スカラLMSは線形代数Libを書く
このライブラリをスカラーで複製したいと思います。私が知っている限りスカラ型システムはこれほどのものを行うのに十分強力ではありませんが、軽量なモジュラー型のステージングLMSでなければなりません。そこにはいくつかのプロジェクトがあるようです(Delight、virtualization-lmsなど)。信頼性とパフォーマンスの面でこのようなプロジェクトに使用する権利はどれですか?
ありがとうございました
編集:私はscala 2.10のマクロを見つけました。多分、これは私がここで使いたいものです。重要な部分はhttp://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html
例で説明されて
OM-NOM-NOM @
はベクトル加算
u = v + w
は以降(ネイティブ)C++での良好な性能を持っていないことを説明します加算のために一時変数が作成され、この変数はuに割り当てられます。
for(int i = 0; i < size; i++) tmp[i] = v[i] + w[i];
for(int i = 0; i < size; i++) u[i] = tmp[i];
固有が速く明らかにされ、余分な変数を必要としません
for(int i = 0; i < size; i++) u[i] = v[i] + w[i];
にコンパイル時にこれを減らすために(上記のリンクで段階的に説明した)テンプレートメタプログラミングを使用しています。
すぐに表現テンプレートのメカニズムを記述すると、役立つ可能性があります。 –