2009-11-12 65 views
4

我正在使用ints/longs在Java中進行一些繁重的處理(構建反向索引)。Java中的原始multimap具有良好的(插入,迭代)性能特徵

我確定標準java.collections貼圖的(un)裝箱佔用了總處理時間的很大一部分。 (與使用數組的類似實現相比,由於內存限制,我不能使用它)。

我正在尋找一個快速的第三方實現(或根本任何實現了這個問題),可以支持以下結構:

地圖 與特點:

-keys在地圖上(範圍爲+/- 10.000.000的鍵[0,2^64]) - 值總是附加到列表的末尾 -fast插入(如果可能,攤銷O(1)) - 鍵中的快速迭代-order。

我看過trove,fastuti l等,但找不到使用原語(只有法線貼圖)的多圖實現

任何幫助表示讚賞。

謝謝, 吉爾特 - 揚

+0

結構迷路了: 地圖 2009-11-12 13:21:54

+0

你會得到什麼樣的API有任何給定鍵的值是多少?或者你只是在做包含(鍵,值)查詢? – 2009-11-12 13:24:15

+0

我認爲分期付款O(1)插入和密鑰順序中的快速迭代相互矛盾,或者您需要一個保存密鑰順序的散列,如果您的散列表小於密鑰範圍,這將會很糟糕。 – 2009-11-12 13:32:50

回答

1

你有沒有考慮使用基本long實現多份額自己 - >對象映射和原始INT-設定值?

+0

是的,我正在考慮這個..不要做這樣的事情。 有一個原始長 - >長地圖的開銷是多少?我在問,因爲我正在考慮將{int}解碼爲1長的替代方法(使用一些位操作,從而消除了'多'部分。然而,這種替代方法會要求我查看值,每次我插入/附加一個新值,以便新的解碼值可以計算..(希望是有道理的) 從頂部你會說什麼會更高性能? – 2009-11-12 14:24:42

+0

我真的不知道。也許你應該做一個快速測試? – 2009-11-12 15:58:30

+0

是的,我已經用我的第二種方法,結果是快速(儘管沒有進行比較) 自從(與評論組合)是最有幫助的。 謝謝。 – 2009-11-12 16:15:15

相關問題