Koloboke的目標是替換標準的Java集合和流的API淘正,提供更高效的實現(xiàn)惠况。Koloboke目前的版本主要是替換java.util.HashSet
和java.util.HashMap
参滴。
Koloboke提供了一套完整的集合原始類型的實現(xiàn),可以避免開銷很大的裝箱/拆箱操作恬偷,節(jié)省了原始類型裝箱消耗的內存额划。
在Koloboke中,HashSet和HashMap比其它專門的實現(xiàn)(比如GS collections纬乍、fastutil碱茁、HTTP & Trove)要更快,這是因為:
1)相比于其它庫仿贬,Koloboke對每個entry使用了更少的內存
2)Koloboke目標是把鍵和值存儲在同一行高速緩存中
3)所有的方法都經過了實現(xiàn)優(yōu)化纽竣,而不是像AbstractSet類或AbstractMap類那樣委托給框架類(Skeleton Class)
Koloboke的官網: http://chronicle.software/products/koloboke-collections/
Koloboke的特征:
1)極好的兼容Java集合框架(JCF,Java Collections Framework)
2)所有原始專門的集合類都繼承了基本的接口(比如Collection茧泪、Set蜓氨、Map)
3)可用于替換標準的JCF
4)Koloboke API for Java 6 and Java 7向前兼容Java 8的新方法
5)快速失敗的語義
6)支持null鍵(可選的),就像java.util.HashMap中的Float.NaN和Double.NaN鍵的處理那樣队伟。
什么時候使用Chronicle Map或Koloboke Map穴吹?
使用Chronicle Map的場景:
1)存儲的entry超過5億條
2)在進程之間分布Map
3)使用堆外內存(Off-Heap Memory),因為鍵和值占用了太多的內存嗜侮,JVM遭遇GC的痛苦
當不想在進程間共享數(shù)據(jù)港令,且存儲的entry在5億條以內啥容,那么Koloboke是更理想的選擇。
Koloboke目前的最新版本為0.6.8版顷霹∵浠荩可以從Maven倉庫使用它:
<dependency>
<groupId>net.openhft</groupId>
<artifactId>koloboke-api-jdk8</artifactId>
<version>0.6.8</version>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>koloboke-impl-jdk8</artifactId>
<version>0.6.8</version>
</dependency>
Gradle依賴為
dependencies {
// `jdk8` instead of `jdk6-7` if you use Java 8
compile 'net.openhft:koloboke-api-jdk6-7:0.6.8'
runtime 'net.openhft:koloboke-impl-jdk6-7:0.6.8'
}