gpt4 book ai didi

Java:如何通过从mongodb(远程服务器)读取数据来加速JTree重建?

转载 作者:可可西里 更新时间:2023-11-01 09:59:50 25 4
gpt4 key购买 nike

基本上 mongodb 存储每个节点 userobject(NodePro) 和 parentId。

此类通过查询给定 parentId 的所有子级递归地构建 Jtree。

问题是在处理一棵树的数百或数千个节点时,我必须等待长达 5 分钟才能加载整个树。

有没有办法显着加快这个速度?目前即使处理不到一百个节点,树也需要很长时间才能完成。

public class BuildTree {

public BuildTree(DefaultMutableTreeNode treeNode){
DefaultMutableTreeNode aParentNode = treeNode;
try {
processChildren(aParentNode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void processChildren(DefaultMutableTreeNode parentNode) throws Exception{
NodePro np = (NodePro) parentNode.getUserObject();

List<NodePro> nodelist = NodeDAO.getInstance().getChildrenOfParent(np.getId().toString());

if (nodelist.isEmpty()){
System.out.println("empty");
return;
}else{

for (int i=0; i< nodelist.size(); i++)
{

NodePro childnode = nodelist.get(i);
DefaultMutableTreeNode child = new DefaultMutableTreeNode(childnode);

TreeModel.getInstance().insertNodeInto(child,parentNode,TreeModel.getInstance().getChildCount(parentNode));

DefaultMutableTreeNode parent = (DefaultMutableTreeNode)
TreeModel.getInstance().getChild(parentNode, i);

processChildren(parent);
}

return;
}
}

最佳答案

@trashgod 在他的评论中是正确的:代码把时间花在哪里了?它在对象创建中吗?当您要创建数千个节点时,DefaultMutableTreeNode 性能不佳。是在从MongoDB获取节点信息的过程中吗?

如果您不能加快树的创建速度,您将需要研究延迟加载节点的子节点。也就是说,在用户请求查看子节点之前不要加载节点。

其他可能性是在后台线程中加载子节点。

但是,与任何性能改进工作一样,您需要衡量代码的哪一部分速度较慢,然后找出改进方法。

关于Java:如何通过从mongodb(远程服务器)读取数据来加速JTree重建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com