私がそのようなタイプを持っているとしましょう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)
性能差は?そして、どの方法がより良いですか、そしてその理由は何ですか?