問題タブ [trove4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 標準の Java HashMap を使用すると (Trove THashMap と比較して)、非 HashMap コードの実行が遅くなります
HashMap を使用して、再帰アルゴリズムによって計算された約 200 万の値をキャッシュします。以下のコードのように、変数によって制御されるHashMap<Integer, Double>
Collections Framework またはTIntDoubleHashMap
Trove ライブラリのいずれかを使用します。boolean useTrove
オートボクシングなどを回避するため、Trove ライブラリはより高速になると思います。実際、put()
とのget()
呼び出しは、 の実行に約 500 ミリ秒かかるのに対し、 の実行には (合計で) 約 300 ミリ秒かかりTHashMap
ますHashMap<>
。
現在、私の全体的なプログラム実行時間は、 を使用した場合は約 2.8 秒、 を使用した場合は 6.7THashMap
秒HashMap<>
です。put()
この違いは、とのget()
呼び出しの実行時間の増加だけでは説明できません。
この大幅に増加し
HashMap<>
た実行時間は、各 int/double をオブジェクトにボックス化する必要があるため、この実装は非常にメモリ効率が低く、このメモリ使用量の増加により、プログラムの他の部分でキャッシュ ミスが発生するという事実によって引き起こされていると思われます。この説明は理にかなっていますか? また、この仮説をどのように確認/拒否できますか?一般に、このようなシナリオのアルゴリズムの最適化をどのように探せばよいでしょうか?
HashMap<>
アルゴリズムのプロファイリングは、少なくとも CPU 時間だけを考慮した場合、犯人であることを容易に指摘するものではありません 。メモリを大量に消費するプログラムでは、メモリの使用を優先する必要があることを事前に知っておくだけの問題ですか?
以下の完全なコード。
java - アーティファクト gnu.trove:trove:jar:3.0.3 が中央に見つかりませんでした (https://repo.maven.apache.org/maven2)
gnu.trove ライブラリをダウンロードしようとしていますが、次の依存関係があります。
しかし、私はこのエラーが発生します:
なんで?に他のリポジトリを追加する必要がありますpom.xml
か? 現在、このリポジトリがリストされています:
java - Gradle プロジェクトで Trove4j ライブラリを使用するにはどうすればよいですか
こんにちは、Trove4j ライブラリを私の gradle プロジェクトにインポートするにはどうすればよいか考えていました。
ありがとうございました。
私のbuild.gradleファイル