代码之家  ›  专栏  ›  技术社区  ›  Maurice

我的对象列表应该有多大以保证Java 8的并行流的使用?

  •  2
  • Maurice  · 技术社区  · 7 年前

    我有一个数据库中的对象列表,我想使用 filter() 方法 Stream 类。新对象将不断添加到数据库中,因此对象列表可能会变得非常大,可能有数千个对象。我想使用Parallelstream来加速过滤过程,但我想知道对象列表大约应该有多大才能使Parallelstream的使用有益。我读过这篇文章: Should I always use a parallel stream when possible? 在这个线程中,他们同意如果您想从使用并行流中获得任何好处,那么数据集应该非常大。但是有多大才是大呢?假设我的数据库中存储了200条记录,并且我检索它们进行过滤,在这种情况下使用并行流是否合理?如果不是,数据集应该有多大?1000美元?可能是2000年吧?我很想知道。谢谢您。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Eugene    7 年前

    根据 this 根据操作情况,至少需要10000英镑,但不需要元素;相反 N*Q 哪里 N = number of elements Q = cost per element .

    但这是一个你所反对的一般公式,如果不测量,这几乎是不可能说的(在这里读猜测);适当的测试将证明你是错的或是对的。

    对于一些简单的操作,它是 几乎 从来没有这样的情况,当你实际需要并行处理的目的是加速。

    这里还需要提到的其他一些事情是,这很大程度上取决于来源——分割是多么容易。任何基于数组或基于索引的东西都很容易分割(而且很快),但是 Queue 或来自 File 不要这样做,这样您可能会损失更多的时间分割而不是计算,当然,除非有足够的元素来覆盖这一点。和 足够地 是你真正测量的东西。