【发布时间】:2011-03-06 05:47:16
【问题描述】:
我注意到 Clojure 中的惰性序列似乎在内部表示为链表(或者至少它们被视为只能顺序访问元素的序列)。即使在缓存到内存之后,使用 nth 访问惰性序列的时间也是 O(n),而不是像向量那样的恒定时间。
;; ...created my-lazy-seq here and used the first 50,000 items
(time (nth my-lazy-seq 10000))
"Elapsed time: 1.081325 msecs"
(time (nth my-lazy-seq 20000))
"Elapsed time: 2.554563 msecs"
如何在 Clojure 中获得恒定时间查找或增量创建惰性向量?
想象一下,在惰性向量的生成过程中,每个元素都是它之前所有元素的函数,因此遍历列表所花费的时间成为一个重要因素。
相关问题只出现了这个不完整的Java sn-p: Designing a lazy vector: problem with const
【问题讨论】:
标签: clojure list vector lazy-sequences