Windows上的Java EHCache比Ubuntu慢

时间:2017-05-16 08:11:19

标签: java windows ubuntu ehcache

我正在我的项目中使用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秒以上。我正在开展一个项目,执行时间对我来说绝对重要。此外,我不能使用简单的地图,因为我需要在我的地图中存储大量数据。是否有特定原因导致这种情况发生?或者我使用了错误的设置来缓存?或者我应该使用一些不同的库将我的数据存储为地图?

0 个答案:

没有答案