填充一次列表



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

我想在页面上画出这九个元素,在这一点上,它们保证是不同的元素。

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

我想把这个列表记下来,并使它可以进行第n次索引。欢迎提出建议和想法。

与其调用"函数",不如只在尚未调用的情况下调用它。如果调用它,请确保存储结果。如果你不这么认为,那就查一下结果。

memoize(http://crossclj.info/fun/clojure.core/memoize.html)可能会帮助你实现这一点。根据您的缓存需求,您可能需要研究它的实现并实现更合适的东西。

您可能想参考https://github.com/clojure/core.memoize以满足服务器端更复杂的存储需求。

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

最新更新