2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【Lisp】プログラミング言語 Clojure #2【JVM】

250 :デフォルトの名無しさん:2011/12/09(金) 08:50:14.37
>>248
Clojureであってもヒープを大量に消費すればfull GCが走って遅くなる
ただ、可能な限りデータ構造を共有する(不変性のおかげで、書き換えられる心配がないからコピーしなくてもいい)ので、例えば

(def a [1 2 3])
(def b (conj a 4))
(def c (conj b 5))

と書いても[1 2 3]と[1 2 3 4]と[1 2 3 4 5]をヒープに置く必要はなく
[1 2 3]と[<aの内容を参照> 4]と[<bの内容を参照> 5]を持っていればいい
これが>>249の「永続的なデータ構造」で、ヒープの効率向上に貢献する

実際の仕組みはもう少し複雑なので、正確に知りたい人はこれを読むといい
http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation/

243 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)