使用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
从中创建一个向量。