小编ave*_*bos的帖子

与 IntArray 相比,ArrayList<Int> 对于大量元素的性能极其糟糕

我做了两种快速排序的实现:顺序排序和并行排序。第二个是使用 ForkJoinPool 使用 4 个线程编写的(我在下面添加了实现)排序函数与 ArrayList 一起使用:

override fun sort(array: ArrayList<Int>): ArrayList<Int> { 
   ...
}
Run Code Online (Sandbox Code Playgroud)

我在大小为 1e3-1e7 的数组上测试了它们,对于所有大小的并行实现比顺序执行快约 2.5 倍。但从size=1e8 开始,并行算法的运行速度比顺序算法慢约 2 倍。

class ParQuickSort(
    private val seqBlockSize:Int = 1000,
    nThreads: Int = 4
) : QuickSort {

    private val threadPool = ForkJoinPool(nThreads)

    override fun sort(array: IntArray): IntArray {
        threadPool.invoke(
            SortTask(array, 0, array.size - 1, seqBlockSize)
        )
        return array
    }

    fun shutdown() {
        threadPool.shutdownNow()
    }

    private class SortTask(
        val array: IntArray,
        val l: Int,
        val r: Int,
        val …
Run Code Online (Sandbox Code Playgroud)

java arrays multithreading arraylist kotlin

4
推荐指数
1
解决办法
108
查看次数

标签 统计

arraylist ×1

arrays ×1

java ×1

kotlin ×1

multithreading ×1