8

我需要决定是否在我参与的 Clojure 系统中使用 STM,因为系统需要将几个 GB 存储在单个 STM 参考中。

我想听听任何对使用 Clojure STM 和大型索引数据集有任何建议的人的意见,以了解他们的经验。

4

2 回答 2

4

我一直在将 Clojure 用于一些相当大规模的数据处理任务(肯定是千兆字节的数据,通常是存储在各种 Clojure 构造/STM refs 中的大量大型 Java 数组)。

只要所有内容都适合可用内存,您就不应该在单个参考中遇到大量数据的问题。ref 本身仅应用少量固定的 STM 开销,该开销与其中包含的任何内容的大小无关。

Clojure 的标准数据结构(映射、向量等)中内置的结构共享是一个不错的额外好处 - 您可以获取 10GB 数据结构的完整副本,在结构中的任何位置更改一个元素,并保证两者数据结构总共只需要超过 10GB 的一小部分。这非常有帮助,特别是如果您考虑到由于 STM/并发,您可能会在任何时候创建多个不同版本的数据。

于 2011-01-07T19:51:36.923 回答
1

性能不会比涉及单个参考和小数据集的 STM 更差或更好。数据集的更新次数比数据集的实际大小更能影响性能。

如果您有一个数据集的作者和许多读者,那么性能仍然会非常好。但是,如果您有一个读者和许多作者,性能将会受到影响。

也许更多信息会帮助我们为您提供更多帮助。

于 2011-01-06T22:29:06.133 回答