草庐IT

parallelSort

全部标签

java - 为什么 Java 8 有 Arrays.parallelSort() 但没有 Collections.parallelSort()?

Java8以重载Arrays.sort()的形式引入了一种用于数组多线程排序的并行算法。方法。为什么它不提供Collections.parallelSort(),用于List的多线程排序? 最佳答案 List不一定能有效实现与数组相同的并行排序算法。您可以将它直接应用于ArrayList,但很可能不能应用于LinkedList,因为它缺乏有效的随机访问。有针对这种列表的高效多线程排序算法,但它们不同于随机访问列表。而且,事实上,List接口(interface)的线程安全实现可能根本不支持高效的外部多线程排序,由于同步。为它们提供通

java - 在 Java 8 中并行排序列表而不创建临时数组

Java8提供java.util.Arrays.parallelSort,它使用fork-join框架对数组进行并行排序。但是没有对应的Collections.parallelSort用于排序列表。我可以使用toArray对该数组进行排序并将结果存储回我的列表中,但这会暂时增加内存使用量,如果我使用并行排序,这已经很高了,因为并行排序只为庞大的list带来返回。而不是两倍的内存(列表加上parallelSort的工作内存),我使用三次(列表,临时数组和parallelSort的工作内存)。(Arrays.parallelSort文档说“该算法需要一个不大于原始数组大小的工作空间”。)除

java - 在 Java 8 中并行排序列表而不创建临时数组

Java8提供java.util.Arrays.parallelSort,它使用fork-join框架对数组进行并行排序。但是没有对应的Collections.parallelSort用于排序列表。我可以使用toArray对该数组进行排序并将结果存储回我的列表中,但这会暂时增加内存使用量,如果我使用并行排序,这已经很高了,因为并行排序只为庞大的list带来返回。而不是两倍的内存(列表加上parallelSort的工作内存),我使用三次(列表,临时数组和parallelSort的工作内存)。(Arrays.parallelSort文档说“该算法需要一个不大于原始数组大小的工作空间”。)除

java - Arrays.sort() 和 Arrays.parallelSort() 之间的区别

正在使用Java8功能,提到here.无法理解parallelSort()究竟做了什么。谁能解释一下sort()和parallelSort()之间的实际区别是什么? 最佳答案 并行排序使用threading-每个线程获取列表的一个block,所有block并行排序。然后将这些排序的block合并到一个结果中。当集合中有很多元素时,它会更快。并行化的开销(分成block和合并)在较大的集合上变得相当小,但对于较小的集合来说却很大。看看这张表(当然,结果取决于CPU、核数、后台进程等):取自此链接:http://www.javacode

java - 有没有理由不使用 Java 8 的 parallelSort?

我正在阅读thisquestion关于Java的Arrays.sort之间的区别和Arrays.parallelSort,到现在已经有几年了。令我惊讶的是,只有一个问题提到了使用parallelSort的任何缺点;也就是说,如果您使用大量CPU,则加速会降低。假设您不在某种专门的单线程环境中,是否应该始终选择parallelSort?有没有理由不这样做?请注意,上述问题的答案之一提到,如果元素少于4096个,则parallelSort无论如何都会简单地调用sort。 最佳答案 使用Arrays.parallelSort有一些缺点它使