填充一次列表

时间:2015-03-30 17:33:22

标签: list clojure datomic

使用datomic和clojure我查询数据库并获取九个元素的列表。

我想在页面上绘制这九个元素,并且在这一点上它们保证是不同的元素。

但是,每次调用该函数时,它都会重新执行查询,返回一个新列表,然后从新列表中获取一个元素。这是非常低效的,并且还引入了重复的可能性。

我想记住这个列表并让它成为nth-indexable。建议和想法欢迎。

1 个答案:

答案 0 :(得分:2)

如果你还没有调用它,你应该只调用它来代替调用“函数”。如果您调用它,请确保存储结果。如果您不打电话,请查看结果。

memoizehttp://crossclj.info/fun/clojure.core/memoize.html)可能会帮助您实现这一目标。根据您的缓存要求,您可能希望研究其实现并实现更合适的内容。

您可能希望在服务器端引用https://github.com/clojure/core.memoize以获得更复杂的记忆需求。

任何列表都可以使用O(n)进行nth-indexable。对于O(log 32 n)性能,使用vec从中创建一个向量。