【发布时间】:2011-07-30 12:41:30
【问题描述】:
这是一个简单的问题。这是我在空闲时间慢慢阅读的这本书的练习代码,它检查(不平衡的)二叉树是否有序(例如左
对于is_ordered函数,可以为每个组合写出所有带有嵌套记录的子句,并去掉compare_nodes;但是使用 compare_nodes 后代码看起来更清晰。问题是,没有 compare_nodes 的代码会更快,还是编译器足够聪明,可以以其他方式跟踪 const 正确性/优化 compare_node(对于现实世界的代码,不仅仅是这个简单的例子)?
-record(node, {l=false,r=false,v}).
is_ordered(false) -> true;
is_ordered(#node{l=L,r=R} = N) ->
compare_nodes(L,N) and compare_nodes(N,R) and is_ordered(L) and is_ordered(R).
compare_nodes(L,R) when L == false; R == false -> true;
compare_nodes(#node{v=LV},#node{v=RV}) -> LV =< RV.
【问题讨论】:
标签: performance erlang