Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala并行开销是如何产生的?;_Java_Multithreading_Scala - Fatal编程技术网

Java Scala并行开销是如何产生的?;

Java Scala并行开销是如何产生的?;,java,multithreading,scala,Java,Multithreading,Scala,根据doc的说法,Scala ParArray将在元素操作中使用并行计算 我现在有一个操作def-fun(index:Int)(我是索引,不会影响方法的成本),并使用以下命令调用 fun(1) // 3 ms (0 until 2).indices.toParArray(i => fun(i)) // 6 ms (0 until 10).indices.toParArray(i => fun(i)) // 20 ms (0 until 50).indices.toParArray(i

根据doc的说法,Scala ParArray将在元素操作中使用并行计算

我现在有一个操作
def-fun(index:Int)
(我是索引,不会影响方法的成本),并使用以下命令调用

fun(1) // 3 ms
(0 until 2).indices.toParArray(i => fun(i)) // 6 ms
(0 until 10).indices.toParArray(i => fun(i)) // 20 ms
(0 until 50).indices.toParArray(i => fun(i)) // 35 ms
我的机器有>50个内核,所以理想情况下它们都应该花费3毫秒

我用(0到50)代码对每个单独的操作进行计时,发现大多数操作需要3~10ms,但一个操作需要30ms,总共需要35ms


那么在内部它是如何工作的呢?我们可以减少这种开销吗?

您的代码有点混乱。为什么创建一个
immutable.Range.Inclusive=0到2
,然后将其转换为
immutable.Range=0到3
,然后将其转换为
ParArray
?所有转换开销的目的是什么?为什么不仅仅是
ParArray.fill(3)(fun())
?@jwvh我必须使用这些索引将它们传递到
fun()
,顺便问一下,这些转换是否昂贵?但是在发布的代码中,索引没有传递到
fun()
。如果你想这样做,为什么不把它列成表格呢?我不知道转换是否昂贵,我只是好奇为什么它们会出现在那里,而它们除了使开销计算复杂化之外,似乎没有任何用途。@jwvh根据您的建议进行了更新。首先,并行集合显示没有真正的用处,这就是为什么它们被移到了另一个库中。第二,创建和协调线程的成本很高,非常高,对于一个需要3毫秒的操作来说,并行执行总是比较慢。为什么创建一个
immutable.Range.Inclusive=0到2
,然后将其转换为
immutable.Range=0到3
,然后将其转换为
ParArray
?所有转换开销的目的是什么?为什么不仅仅是
ParArray.fill(3)(fun())
?@jwvh我必须使用这些索引将它们传递到
fun()
,顺便问一下,这些转换是否昂贵?但是在发布的代码中,索引没有传递到
fun()
。如果你想这样做,为什么不把它列成表格呢?我不知道转换是否昂贵,我只是好奇为什么它们会出现在那里,而它们除了使开销计算复杂化之外,似乎没有任何用途。@jwvh根据您的建议进行了更新。首先,并行集合显示没有真正的用处,这就是为什么它们被移到了另一个库中。第二,创建和协调线程的成本很高,非常高,对于一个需要3毫秒的操作来说,并行执行总是比较慢。