【发布时间】:2014-07-04 08:35:51
【问题描述】:
我正在研究一种路由算法,我必须首先计算一个图。在我的程序的当前版本中,获得一条路线基本上需要 8 秒以上,因为我为每个路线请求创建了图表。 这就是为什么我正在寻找一种可以加快寻找路线过程的方法。在做了一些研究之后,我了解到我可以计算一次图形,然后将其加载到内存中并从那里访问它。听起来很酷很简单,但是当我尝试将其付诸实践时,我就卡住了。
我选择了 google 的 guava 作为缓存方法,我确实听说它很简单,但是对于我的生活,我不明白如何才能使整个图形工作,我在这方面的知识非常有限。我可以为一个字符串执行此操作,但不知道如何为 Graph 对象执行此操作。
我在文档中找到了类似这样定义的内容,但实际上我没有办法进行设置。
LoadingCache<String, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000000)
.build(
new CacheLoader<String, Graph>() {
public Graph load(String key) {
return createExpensiveGraph(key);
}
});
private static Graph createExpensiveGraph(String key){
LineStringGraphGenerator graphGen = new LineStringGraphGenerator();
for (ListIterator l = lines.listIterator(); l.hasNext(); ){
LineString line_graph = (LineString) l.next();
graphGen.add(line_graph);
}
networkGraph = graphGen.getGraph();
return networkGraph;
}
【问题讨论】:
-
那么缺少什么?创建图表的代码?
-
不,我有密码,但就这些了吗?
-
哪部分不起作用?
-
嗯,我不明白如何从缓存中获取图形以进一步处理它?我还在主帖中添加了图形创建功能。
-
在你的情况下:
graphs.get(key).