2017-11-20 18 views
1

私は、カスタムオブジェクトを使用するJavaプロジェクトを作成しています。これは主にdouble変数で構成されています。配列のパフォーマンスと独立変数のパフォーマンスを得る方法

プロジェクトが進化したので、smallObjectのすべての変数が4要素の配列になる必要がありました。つまり、double変数は、double型の配列となりました。

bigObjectを使用するプロセスは、smallObjectとまったく同じです。唯一の違いは、要素番号が含まれているため、smallObject.a = 4はbigObject.a [2] = 4になります。

私は配列にアクセスするたびに、私が必要とする要素(検索する必要はありません)を正確に定義しているので、パフォーマンスはほぼ同じになるはずですが、パフォーマンスは2〜3の係数。これらのオブジェクトは、最大3百万要素まで成長することができるarraylistsとキューで使用されます。

パフォーマンスが低下することは予想されますか?この問題を回避するにはどうすればよいですか?個々の変数(a [4]はa1、a2、a3、a4になります)を使うことを考えていましたが、これはそれぞれが正しい変数にアクセスしてコードを読むことができないように、

お時間をいただきありがとうございます。

+1

アレイへのアクセスには常に境界チェックが必要であり、パフォーマンスヒットが重大になる可能性があります。 – Kayaman

+1

コードスニペットが回答に役立つ可能性があります。 –

+0

境界チェックや(おそらく多くの)データの局所性が悪い可能性があります。個々の変数で配列を置き換えるというハックはおそらく助けになりますが、より簡単な方法があります。 ... – maaartinus

答えて

-1

私が知っている限り、リストベースのオブジェクトを使用して位置4の要素を見つけると、リストはポインタ(O(n)、nは要素の数uが大きなO表記に使用されている場合は配列の)。あなたが本当の倍精度配列のようなより単純な要素を使用する場合は、要素4を1つの操作O(1)で実行する必要があります。したがって、double []を使用してみてください。
これがあなたを助けてくれることを願っています。
アレックス

+1

'LinkedList'だけが' O(n) 'アクセス権を持ち、OPはすでに配列を使用していました。答えは間違っていて、質問のポイントを完全に逃しています。 – Kayaman

関連する問題