私は評価ツリークラスを持っています。各ノードには厳密な順序で子があります。サーバーには、そのようなツリーのリストがあります。
HashMapsクライアントがサーバーに正常に接続すると、計算のために選択されたツリーにさまざまなものが送信されます。典型的なHashMaps には、[変数文字列名、変数 int 値] のペアがあります。
それぞれTreeNodeに複雑な条件があり、変数を読み取ったり、AND、OR、XOR などの演算を行ったり、他の変数や数値と比較したりできます。それぞれTreeNodeにステートメントもあり、変数を読み書きしたり、新しい変数をHashMaps に配置したりできます。これは、後で別の で読み書きできます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);
}
}
}
HashMap私のコードは現在、100 個のノードを持つツリーと10 個の変数を持つ入力に対して、Intel i7 u3517 で約 200000 回/秒の反復を実行します。どうすれば高速化できますか?