首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ehcache自动完成

使用Ehcache自动完成
EN

Stack Overflow用户
提问于 2012-06-06 23:31:01
回答 1查看 522关注 0票数 1

我在一个正在开发的表单中有几个自动补全字段。最大的包含近20k的记录,最小的包含大约1k的记录。到目前为止,我只使用了一个TreeMap来处理这个任务,但是我发现它的效率非常低。我现在的结构是这样的。

代码语言:javascript
复制
private SortedMap<String, Set<String>> cache;

public AutocompleteCacheServiceImpl() {
    cache = Collections.synchronizedSortedMap(new TreeMap<String, Set<String>>());
}

当像这样填充的时候,

代码语言:javascript
复制
private void populateCache(String id, String name) {
    int len = name.length();

    for (int i = 1; i <= len; i++) {
        String key = name.substring(0, i).toLowerCase();
        if(this.cache.containsKey(key)) {
            Set<String> exist = cache.get(key);
            if(!exist.contains(id)) {                
                exist.add(id);
            }                
        } else {
            Set<String> _e = new HashSet<String>();
            _e.add(id);
            this.cache.put(key, _e);
        }

    }        
}

输出1小时1户1户1户1户1户

我希望用Ehcache之类的东西替换我的缓存实现,但我对它并不是很熟悉。我想知道是否有人有任何建议来设置这样的东西,这样击键的响应时间将保持在500ms或更短。

我看过这个页面http://ehcache.org/documentation/get-started/getting-started

但也许我目前的填充方法导致我忽略了一种更好的方法。

有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-06-06 23:39:41

如果您希望优化性能,可以看看patricia tries,它有一个实现SortedMap的实现here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10917393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档