假设我有这样的类型type 'a tree = Node of int * 'a * 'a tree
该int
部分是rank
.
我也有一个功能let rank = function Node (r, _, _) -> r
。
假设在我的真实代码中,我有很多需要访问rank
节点的地方,而且大部分时间,rank
都是相同节点的。
我的问题是我应该总是rank t
直接使用函数还是应该给 at 的等级,比如说r
,然后使用r
?
例如,我可以做
if rank t1 < rank t2 then Node (rank t1 + 1, 5, t1)
else Node (rank t2 + 1, 5, t2)
或者
let r1 = rank t1 in let r2 = rank t2 in
if r1 < r2 then Node (r1+1, 5, t1) else Node (r2, 5, t2)
性能差异是什么?哪种方式更好,为什么?