1

ID番号Thingyを使用して追跡しているオブジェクトがたくさんあります。longID の順序については保証がありませんので、HashMap<Long, Thingy>ランダムアクセス用に保管しています。ただし、Android では、この非常に優れたクラスがSparseArrayあり、私が使用している方法よりも高速であると主張HashMapしています。おそらく最も注目に値するのは、オートボクシング税がないことです。残念ながら、キーはintではなくlongです。

私の ID の値は、今世紀longのいつでも範囲を超える心配がないほどのものです。intからのキャストlongintプラスの最適化は、私の操作のSparseArrayオートボクシングよりも安価になりますか? 私の直感はイエスと言っていますが、追加の情報が欲しいです。longLongHashMap

4

2 に答える 2

3

うーん。longへのキャストはおそらく高速になりますが、それが正しいintかどうかは明らかではありません。

于 2012-04-04T20:51:54.173 に答える
1

キャストは、ボクシングを使用する場合のメモリ割り当てと新しいオブジェクトの作成に反対する 1 つの JVM コマンド (l2i) であるため、間違いなく高速になりますが、Louis が指摘したように、精度が失われていますlongintid 値がint範囲内にあると確信している場合は、おそらく安全ですが、そのような仮定には従いません。

私がすることは、その SparseArray クラスを Android ソースからコピーし、longキーを使用するように変更する可能性を調査することです。私は現在それを見ていますが、一見すると間違いなく可能です。

于 2012-04-04T21:14:49.687 に答える