我正在我的项目中使用EHCache 3.3.1,该项目正在NetBeans IDE上运行。但是,我注意到一件奇怪的事情。当我在Windows操作系统上运行相同的代码时,它比在ubuntu上运行时慢10倍,所以我进行了以下测试:
import java.io.File;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.Cache;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.units.MemoryUnit;
public class EHCacheManager {
private static CacheManager instance;
static{
instance = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(System.getProperty("user.dir") +
File.separator + "CacheFiles"))
.build(true);
}
private EHCacheManager(){
}
public static CacheManager getInstance(){
return instance;
}
}
public class EHCacheTest {
private static CacheManager cacheManager = EHCacheManager.getInstance();
private static Cache<String, Integer> cacheMap =
cacheManager.createCache("HostInfoMap",
CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class,
Integer.class,ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(500, MemoryUnit.MB)
.offheap(600, MemoryUnit.MB)
.disk(1, MemoryUnit.GB))
.build());
public static void main(String[] args) {
System.err.println("Starting fill the cache..");
for(int i = 0; i < 100000; i++){
cacheMap.put("number" + i, i);
}
System.err.println("Finished fill the cache..");
System.err.flush();
}
}
奇怪的是,这个代码在ubuntu上运行大约1秒,而在Windows上运行需要12秒以上。我正在开展一个项目,执行时间对我来说绝对重要。此外,我不能使用简单的地图,因为我需要在我的地图中存储大量数据。是否有特定原因导致这种情况发生?或者我使用了错误的设置来缓存?或者我应该使用一些不同的库将我的数据存储为地图?