我有一个递归函数,它操作整数二叉树,实现为一对嵌套的对或整数。我的函数创建一棵具有不同结构的新树,并递归调用自身直到满足某些条件。我发现的问题是,第一次运行代码时,需要花费很长时间来 JIT 编译该函数的所有可能的签名;之后运行良好。
这是最小的工作示例:
my_tree = ((((6 => 7) => (6 => 7)) => ((7 => 7) => (0 => 7))) => (((8 => 7) => (7 => 7)) => ((8 => 8) => (8 => 0)))) => ((((2 => 4) => 7) => (6 => (0 => 5))) => (((6 => 8) => (2 => 8)) => ((2 => 1) => (4 => 5))))
function tree_reduce(tree::Pair)
left, right = tree
left isa Pair && (left = tree_reduce(left))
right isa …Run Code Online (Sandbox Code Playgroud)