scala集合转java_Java,Scala,Guava和Trove集合-它们可以容纳多少数据?
scala集合轉java
關于我們的數據結構的一個有趣的事情是,即使我們非常熟悉它們,但對于我們來說,仍然很難說出像HashMap這樣基本的東西在1GB的內存中可以容納多少個項目。 我們可能會在學校,高級開發人員那里學到這一點,或者由于數據結構選擇不當而導致服務器崩潰時,我們可能會以艱難的方式來學習。 所以我決定這樣做。 我從大約20個最流行的Java,Scala,Guava和Trove集合中進行了測試,并測試了它們每個在1GB內存的JVM(通過-Xmx)中可以容納多少個隨機整數。 對于每個數據結構,我們都附加int,直到收到OutOfMemoryError為止,該錯誤結束了測試。 為了確保一致性,我們在JDK 7上運行了每個測試5次。 對于這種基本測試,我發現其中一些結果令人驚訝。 *我想我們不在同一頁上,因為這不是競爭。 不同的集合具有不同的語義。 我也沒有包括時間,因為重點不是微基準測試性能,而是讓我們了解我們日常使用的收藏實際上可以容納多少。
結果
- Scala的集合比Java具有更大的容量。 Scala集合似乎比Java集合更有效。 雖然某些集合(例如TreeSets)的表現大致相同,但其他集合(例如Scala的HashMaps)卻能夠容納近15%的物品。 HashSet可以容納的項目比Java同類項目多8%。 我很想聽聽社區人士為什么這么認為。 Scala的ArrayBuffer相對于ArrayList具有一點優勢。
 - 唯一的例外是Scala的鏈表,它比Java的LinkedList所保存的數據少18%。 這里的一個約束是,為了追加到列表,它需要接收另一個鏈接列表而不是直接值。 即使這樣,假設臨時列表是GC的,它本身也不會影響列表在1GB JVM中的容納容量。
 
*我們正在計算持有的int數,這意味著每張地圖插入2 int。
- 如果您不使用Trove,那么您會錯過。 從第一天開始,我們就一直在Takipi的后端使用Trove的收藏。 好吧,可惜不是從第一天開始,因為這可以節省我們很多時間來優化服務器代碼。 TIntArrayList能夠容納250%的Scala和Java盒裝同類產品,這些數字足以說明一切。
 - 對于地圖觀察到相似的比率。 令人驚訝的是,Trove的映射性能超過Java和Scala列表超過50%。 請記住,您還具有從int到Object的Trove集合映射,反之亦然,因此您不需要完全原始的映射即可享受容量的好處。
 - 即使這樣,我們仍然看到Trove的TIntLinkedList可以容納比裝箱它們的原語的Java ArrayList或Scala ArrayBuffer更少的數據。 這確實使您可以查看在您的代碼中大量使用的鏈表并重新考慮-我絕對需要它嗎?
 - 由于使用Trove集合與標準庫的集合實際上沒有開銷,因此我不會將使用它們歸類為“按需優化”方案。 這是因為內存消耗錯誤通常會在規模上顯現,這是最難發現的錯誤,因此您必須開始進行生產調試 (當然Trove不會使您擺脫固有的效率低下的算法)。 有時可能是分析核心轉儲和觀看巨人比賽之間的區別。
 - 番石榴–大地圖,小套。 番石榴的多套產品比Java和Scala的同類產品價格更高。 與Scala的設置相比,它們能夠保存的數據量減少了19%。 不利的一面當然是,他們可以執行使用標準集合語義不可能完成的事情。 只要多集將在您的內存結構中扮演重要角色,請確保您需要這些。
 - 對于多貼圖,我們看到的情況恰恰相反。 Guava的MultiHashMap比Java的hashmap擁有的值多20%,比Scala的多10%。 看到雖然Guava的多集在容量方面不及Java和Scala等價物,但MultiMap實際上卻勝過Java和Scala。
 
那里有很多其他的收集類型(隊列,堆棧等),但是我想從基礎開始,并根據受歡迎的需求添加更多的收集類型。 因此,如果您想在列表中看到另一個收藏夾,或者想進一步了解某些功能上的差異,請在下面的評論部分中知道該怎么做。
- 該代碼可在此處獲得 。
 
翻譯自: https://www.javacodegeeks.com/2014/01/java-scala-guava-and-trove-collections-how-much-data-can-they-hold.html
scala集合轉java
總結
以上是生活随笔為你收集整理的scala集合转java_Java,Scala,Guava和Trove集合-它们可以容纳多少数据?的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: J2Pay –入门
 - 下一篇: 炉石传说友谊赛怎么刷 刷炉石传说友谊赛的