gpt4 book ai didi

java - 快速树评估

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:42 24 4
gpt4 key购买 nike

我有一个评估树类。每个节点都有严格顺序的 child 。服务器有一个这样的树的列表。

当客户端成功连接到服务器时,它会向选定的树发送大量不同的HashMap 以进行计算。典型的 HashMap 有对:[Variable string name, Variable int value]。

每个TreeNode都有一个复杂的条件,可以读取变量,有AND、OR、XOR等运算,与其他变量或数字进行比较。每个 TreeNode 也有语句,可以读/写变量并将新变量放入 HashMap,随后可以在另一个 TreeNode 中读/写>.

这是树的简化结构:

public static class TreeNode {
public static abstract class Condition {
public abstract boolean evaluate(HashMap<String, Integer> contex);
}

public static abstract class Statement {
public abstract void execute(HashMap<String, Integer> contex);
}

private Condition condition;
private List<Statement> statements;
private List<TreeNode> children;

public void run(final HashMap<String, Integer> contex) {
if (condition != null && !condition.evaluate(contex)) {
return;
}

for (final Statement statement : statements) {
statement.execute(contex);
}

for (final TreeNode child : children) {
child.run(contex);
}
}
}

我的代码目前在 Intel i7 u3517 上针对具有 100 个节点的树和具有 10 个变量的输入 HashMap 执行大约 200000 次迭代/秒。我怎样才能加快速度?

最佳答案

如果您的语句和子语句可以并行运行并且您使用的是 Java 8,则可以使用 parallelStream()

        statements.parallelStream().forEach((statement) -> {
statement.execute(contex);
});

children.parallelStream().forEach((child) -> {
child.run(contex);
});

关于java - 快速树评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495198/

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