私は最小限に抑えたいかなり高価な配列計算 (SpectralResponse) を持っています。最良の方法は、それらを保存し、将来同じアレイが再び必要になったときに元に戻すことだと考えました。決定は、BasicParameters を使用して行われます。
そのため、現在、SpectralResponse の配列にはオブジェクトの LinkedList を使用し、BasicParameter には別の LinkedList を使用しています。また、BasicParameters には、パラメーター セットを比較する isParamsEqualTo(BasicParameters) メソッドがあります。
LinkedList<SpectralResponse> responses
LinkedList<BasicParameters> fitParams
LinkedList<Integer> responseNumbers
調べるには、BasicParameters のリストを調べて一致をチェックし、一致する場合は SpectralResponse を返します。一致しない場合は、SpectralResponse を計算します。
これは、検索に使用した for ループです。
size: LinkedList size, limited to a reasonable value
responseNumber: just another variable to distinguish the SpectralResponse.
for ( i = size-1; i > 0 ; i--) {
if (responseNumbers.get(i) == responseNum)
{
tempFit = fitParams.get(i);
if (tempFit.isParamsEqualTo(fit))
{
return responses.get(i);
}
}
}
しかし、どういうわけか、このようにすると大量のメモリが消費されるだけでなく、SpectralResponse を直接計算するよりも実際には遅くなります。はるかに遅い。
私の実装が間違っているのでしょうか、それとも事前計算とルックアップの方が速いと誤解していましたか?