【发布时间】:2012-04-13 02:39:34
【问题描述】:
我有这个代码:
:history
(cons [t (:latest thing)] (take n (:history thing)) )
这是为了在我的程序的每次迭代中将最近历史的滚动窗口添加到地图中。我发现,经过一定次数的迭代(约 50 次)后,我的程序会显着且渐进地变慢。
然而,如果我将代码更改为:
:history
(cons [t (:latest thing)] (take n (vec (:history thing))) )
然后程序在每次迭代中运行的时间稍长(因为正在实现惰性序列),但运行一致并且没有减慢。
刚接触 Clojure,我不明白……这与分块序列有关吗?
【问题讨论】:
标签: performance clojure lazy-sequences