私はこのコードを持っていました:
:history
(cons [t (:latest thing)] (take n (:history thing)) )
これは、プログラムの反復ごとに、最近の履歴のローリング ウィンドウをマップに追加するためのものでした。私が見つけたのは、特定の回数 (~ 50) の反復の後、私のプログラムは劇的にそして次第に遅くなるということでした。
一方、コードを次のように変更した場合:
:history
(cons [t (:latest thing)] (take n (vec (:history thing))) )
その後、プログラムは反復ごとにわずかに長く実行されましたが (レイジー seq が実現されたため)、一貫して実行され、速度が低下することはありませんでした。
Clojureを初めて使用するのでわかりません...チャンクされたシーケンスと関係がありますか?