4

私がそのようなタイプを持っているとしましょう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)

性能差は?そして、どの方法がより良いですか、そしてその理由は何ですか?

4

1 に答える 1