私はHashMap
のキータイプとしてJavaでカスタムクラスFoo
を使用しています。 Foo
インスタンスのすべてのフィールドは不変です(これらはfinalとprivateで宣言され、コンストラクタでのみ値が割り当てられます)。したがって、与えられたFoo
オブジェクトのhashCode()
も修正されています。最適化のために、コンストラクタで計算して、hashCode()
メソッドでその値を返すだけです。スレッドを使用したJavaの最適化
Foo
のインスタンスもvalue()
のメソッドを持ち、オブジェクトがインスタンス化されると同様の固定値を返します。現在、コンストラクタで計算して返していますが、hashCode()
とvalue()
の間に違いがあります。hashCode()
は、オブジェクトの作成後ほぼ即時に呼び出されますが、後でvalue()
が呼び出されます。私は、ハッシュコードを計算するために別のスレッドを有するという理由だけで、同期の問題の実行時間を増加させることを理解し、しかし:
- これは
value()
を計算するための良い方法ですか?それは実行時間をまったく改善するでしょうか? - は簡単です
Threads
、またはプールなどを使用する必要がありますか?
注:私は私のプログラムの間違った部分を最適化してるようこれは見えるかもしれませんが、私はすでに「正しい」部分に働いて、へ〜17秒から下の平均実行時間を持ってきました〜2秒。 編集:これは5000個以上のオブジェクトがありますが、これは控えめな見積もりです。
でチェック例外をラップすることができ、それは 'ことができるだろう)(値'として、奇妙なことでしょう無効な値を返します。 – njzk2
@ njzk2それは私のプログラムには問題ありません。私が言ったように、 'value()'はオブジェクトが作られてから長い時間と呼ばれます。 – shardulc