0

このクラス定義は少し奇妙だと思います: http://www.extremeoptimization.com/Documentation/Reference/Extreme.Mathematics.LinearAlgebra.SingleLeastSquaresSolver_Members.aspx

Solve メソッドには戻り値がありますが、Solution プロパティでも結果を取得できるため、その必要はありません。

これは、私が従来のコードと見なしているものです。

var sqrt2 = Math.Sqrt(2)

これは、リンクのソルバーと同じ精神の代替手段になります。

var sqrtCalculator = new SqrtCalculator();
sqrtCalculator.Parameter = 2;
sqrtCalculator.Run();
var sqrt2 = sqrtCalculator.Result;

2 番目のバージョンが少し「非伝統的」であること以外に、長所と短所は何ですか?

はい、コンパイラーは、いくつかのプロパティ (パラメーター) を割り当てるのを忘れたユーザーを助けませんが、これは、書き込み可能なプロパティを含み、コンストラクターに必須の値を持たないすべてのコンポーネントに当てはまります。

はい、スレッド化は機能しませんが、各スレッドは独自のソルバーを作成できます。

はい、ガベージ コレクターはソルバーの結果を破棄できませんが、ソルバー全体が破棄された場合は破棄されます。

はい、コンパイラとプロセッサには、パラメータと戻り値の特別な処理があり、高速になりますが、パラメータ処理の時間はほとんど無視できます。

等々。他のアイデア?

4

1 に答える 1

0

さて、1年後、私はこの「内向的」アプローチの明らかな欠陥を発見しました. 私は既存のフィルタ オブジェクトを使用していますが、これは測定オブジェクトに対して動作するはずですが、上記の「すべてが自分であり、他には何もない」方法でそれ自体に対して動作します。ここで、顧客は、最初の計算から数分後に測定オブジェクトの再計算を希望しており、その間にフィルターは他の測定オブジェクトを処理しています。ステートレスでデータを測定オブジェクトに保存していれば、Recalculate メソッドを実装するのは簡単なことでした。内向型フィルターの問題を解決する唯一の方法は、フィルター インスタンスを測定オブジェクトの一部にすることです。次に、新しい測定オブジェクトごとにフィルターをインスタンス化する必要があります。また、フィルターはチェーンの一部であるため、チェーン全体を再作成する必要があります。

于 2013-09-30T17:12:29.560 に答える