行,所以我重新格式化後,使其更容易稍懂(抱歉所有pastebins但堆棧溢出當時正在與代碼格式化啞)集<> = Sets.newHashSet()
請注意,我不打算有如下所述的存儲數據的荒謬數量。 我使用我說的量的主要原因是爲了儘可能地提高效率。
可以說我有下面的代碼(S)
將被添加到DropItemQueue方法(始於floodFill(深度0)其它PARAMATERS並不重要)
這是相同的類,然後它會調用掉物品開關DROPITEM方法utils的
我Utils.dropItem方法如下
這是ServerTickHandler.addDropItemQueue方法及其變量存儲
這裏是DropItemQueue類
如果我是說添加億個元素到此HashSet的我已經注意到,大約需要2秒
迭代高於一切使用 這個迭代器被稱爲的seccond
2,每1/20日的HashSet每次迭代的秒數似乎並不多,但用這些元素來擺脫散列集中存儲的每一個元素大約需要50天
每次元素被分析到散列集時maxTicks都是1比以前增加的el更多因此基本上每1秒鐘一個物品被丟棄,但由於2秒鐘的時間來重複其實際需要3秒的時間來丟棄物品,這將需要大約150天的時間來完成迭代並沖刷每個元素並完成
我的問題是,如果擁有多個散列集合,並且最大元素數量少於1000個元素,它會更快嗎?
是的,這會給我100000個哈希集,但是由於它們每個都比較小,迭代次數會更慢(這只是效率的一個非常小的增加),還是有其他更好的方法,除了哈希集或哈希集最好的東西使用?
也注意到,如果我沒有使用較小的迭代多次迭代我不能使用線程由於跨線程的數據冗餘
您的程序流程仍不清楚您發佈的內容。你能包括更完整的樣本嗎? – 2013-03-14 20:03:13
你真的有一個有1億個元素的哈希集?移除一個元素需要一段時間並不令人意外,但2秒看起來非常糟糕。也許你的程序由於物理內存不足而發生顛簸?你有沒有嘗試分析,看看時間到了哪裏?此外,隨着元素被刪除,該過程應該會顯着加速,因此您無法從最壞情況下的迭代時間估計總體時間。 – 2013-03-14 20:14:56
@TedHopp在實際情況下,其中不會有1億個元素,但問題的主要原因是提高大數量的效率。 malcom給我一分鐘,並重新調整代碼的工作方式 – 2013-03-14 20:23:01