(let [a (some-function 3) b (some-function (+ 1 2)) c a] (= a b))
は、いくつかの機能は非常に大きなデータ構造(たとえば百万サイズの配列)
最初の質問を返すと仮定し、私は次のコードを持って言う:どのくらいメモリが割り当てられますか?これら3つのベクトルのそれぞれにメモリを割り当てるか、同じデータ構造を共有しますか?
2番目の質問(密接に関連しています):どのくらい速く比較するのですか? =
は各要素を繰り返し処理するかどうかを決定しますか?
この単純化した例では、ダムに見えるかもしれませんが、これはかもしれ二組のconj
を返しsome-function
私の特定のケースで
(map some-function [1 23 1 32 1 44 1 5 1 1 1 1])
EDIT
のような多くの問題に類似した現実の状況があります構造は、全体依存a
かどうかとb
シェア
ような単純な(。もちろん、あなたの
some-function
が純粋であると仮定)は、二重の割り当てはありません特定するmemoize
を使用してsome-function
をラップし、'同じ値と構造の共有C 'メモリ、それらを比較するのが遅いですか? –私はちょうど私の質問にいくつかの情報を追加しました。事前に助けてくれてありがとう –
@ PedroAffonso - 更新を参照してください。 –