Class Optimizer

java.lang.Object
cloud.opencode.base.expression.compiler.Optimizer

public class Optimizer extends Object
AST Optimizer AST 优化器

Optimizes Abstract Syntax Trees to improve evaluation performance. Applies various optimization techniques including constant folding and short-circuit optimization.

优化抽象语法树以提高求值性能。应用各种优化技术,包括常量折叠和短路优化。

Features | 主要功能:

  • Constant folding: evaluate constant expressions at compile time - 常量折叠: 编译时计算常量表达式
  • Short-circuit optimization for logical operators - 逻辑运算符的短路优化
  • Dead code elimination - 死代码消除
  • Configurable optimization passes - 可配置的优化传递

Usage Examples | 使用示例:

Optimizer optimizer = Optimizer.builder()
    .constantFolding(true)
    .shortCircuit(true)
    .build();
Node optimized = optimizer.optimize(ast);

Security | 安全性:

  • Thread-safe: No, mutable configuration state - 线程安全: 否,可变配置状态
  • Null-safe: Yes, null node returns null - 空值安全: 是,null节点返回null

Performance | 性能特性:

  • Time complexity: O(n) for optimize where n is the number of AST nodes - 时间复杂度: optimize 为 O(n),n为 AST 节点数量
  • Space complexity: O(n) for the optimized AST - 空间复杂度: O(n),存储优化后的 AST
Since:
JDK 25, opencode-base-expression V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Details

    • Optimizer

      public Optimizer()
      Create optimizer with default settings 使用默认设置创建优化器
  • Method Details

    • optimize

      public Node optimize(Node node)
      Optimize an AST node 优化 AST 节点
      Parameters:
      node - the node to optimize | 要优化的节点
      Returns:
      the optimized node | 优化后的节点
    • foldConstants

      public Node foldConstants(Node node)
      Constant Folding 常量折叠

      Evaluates constant expressions at compile time.

      在编译时计算常量表达式。

      Parameters:
      node - the node | 节点
      Returns:
      the optimized node | 优化后的节点
    • optimizeShortCircuit

      public Node optimizeShortCircuit(Node node)
      Short-Circuit Optimization 短路优化

      Optimizes logical operations that can be determined from the left operand.

      优化可以从左操作数确定结果的逻辑运算。

      Parameters:
      node - the node | 节点
      Returns:
      the optimized node | 优化后的节点
    • isConstantFoldingEnabled

      public boolean isConstantFoldingEnabled()
      Check if constant folding is enabled 检查是否启用常量折叠
      Returns:
      true if enabled | 如果启用返回 true
    • setConstantFoldingEnabled

      public Optimizer setConstantFoldingEnabled(boolean enabled)
      Set constant folding enabled 设置是否启用常量折叠
      Parameters:
      enabled - true to enable | true 表示启用
      Returns:
      this optimizer for chaining | 用于链式调用的优化器
    • isShortCircuitEnabled

      public boolean isShortCircuitEnabled()
      Check if short-circuit optimization is enabled 检查是否启用短路优化
      Returns:
      true if enabled | 如果启用返回 true
    • setShortCircuitEnabled

      public Optimizer setShortCircuitEnabled(boolean enabled)
      Set short-circuit optimization enabled 设置是否启用短路优化
      Parameters:
      enabled - true to enable | true 表示启用
      Returns:
      this optimizer for chaining | 用于链式调用的优化器
    • isDeadCodeEliminationEnabled

      public boolean isDeadCodeEliminationEnabled()
      Check if dead code elimination is enabled 检查是否启用死代码消除
      Returns:
      true if enabled | 如果启用返回 true
    • setDeadCodeEliminationEnabled

      public Optimizer setDeadCodeEliminationEnabled(boolean enabled)
      Set dead code elimination enabled 设置是否启用死代码消除
      Parameters:
      enabled - true to enable | true 表示启用
      Returns:
      this optimizer for chaining | 用于链式调用的优化器
    • builder

      public static Optimizer.Builder builder()
      Create builder for Optimizer 创建优化器构建器
      Returns:
      the builder | 构建器