问题标签 [parallel-collections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 这个scala并行数组代码是线程安全的吗?
我想为一项任务使用并行数组,在开始编码之前,我想知道这个小片段是否是线程安全的:
有没有更好的方法来处理并行集合,并在其他地方累积结果?
scala - 如何替换 Scala 2.9 并行集合的分叉连接池?
我一直在研究新的 Scala 2.9 并行集合,并希望放弃很多我粗鲁的业余版本的类似东西。特别是,我想用我自己的东西(例如,通过参与者在网络上分配任务评估的东西)替换默认实现基础的分叉连接池。我的理解是,这只是应用 Scala 的“可堆叠修改”范式的问题,但集合库足够吓人,我不确定哪些位需要修改!
一些具体的问题:
- 标准并行实现仅通过代码与分叉连接池交互是否正确
ForkJoinTasks
? - 我看到有一个替代特征,
FutureThreadPoolTasks
. 我将如何构建一个使用此特征而不是 的集合ForkJoinTasks
? - 我可以写另一个替代方案(也许是一个相应的样板类,它混合
AdaptiveWorkStealingTasks
并以某种方式实例化使用这个新特性的集合实例?
(作为参考,上面提到的所有特征都在Tasks.scala中定义。)
特别是代码示例非常受欢迎!
scala - 使用并行集合就地转换数组
当一个对象有一组对象时,通常需要(例如出于性能原因)更新(替换)一些对象。例如,如果您有一个整数数组,您可能希望将负整数替换为正整数:
使用并行集合库执行此类修改的规范方法是什么?
scala - 为什么使用并行集合不会更快?
我只是想稍微测试一下并行集合,我使用了以下代码行(在 REPL 中):
反对:
但并行版本并不快。事实上,它甚至感觉有点慢(但我还没有真正测量过)。
有人对此有解释吗?
编辑 1:是的,我有一个多核处理器
编辑2:好的,我自己“解决”了这个问题。的实现isProbablePrime
似乎是问题所在,而不是并行集合。我替换isProbablePrime
了另一个函数来测试素数,现在我得到了预期的加速。
scala - 使用并行收集,聚合是否尊重顺序?
在scala中,我有一个并行的Iterable项目,我想迭代它们并以某种方式聚合结果,但要按顺序。我将简化我的用例,并说我们从整数的 Iterable 开始,并希望以并行方式连接它们的字符串表示,并按顺序排列结果。
折叠或聚合有可能吗?从文档中不清楚哪些方法可以并行工作但保持顺序。
scala - Scala 的并行集合会保证排序吗?
如果我有这个:
我写
生成的集合是否与非并行集合的顺序相同?
scala - 在并行集合上调用 .seq 会确保所有线程都加入吗?
我有一个我称之为的集合.par
,如下所示:
在调用 println 之前,调用会.seq
保证所有线程在继续之前加入,并且所有映射都完成吗?
.net - 什么时候 ConcurrentBag 比 List 更好?
我正在使用 Parallel.Foreach 来填充外部 ConcurrentBag。我也尝试使用一个通用列表,一切正常。
我是幸运还是错过了 ConcurrentBag 的特殊范围?
scala - ParVector 地图未并行运行
我有一些代码,例如:
ParVector 大约有 12 个元素。我注意到我所有的工作都是在主线程中完成的,所以我追踪了堆栈跟踪,发现在下面的行(在下面的链接中),ifParallel 是假的(来自 CanBuildFrom)。关于为什么它是错误的任何提示,以及我能做些什么来帮助它?
scala - 当我想在同一个输入上调用几个昂贵的操作然后收集结果时,我可以使用 Scala 的并行集合吗?
我发现了一个类似的问题,但它似乎有一个更简单的情况,其中昂贵的操作总是相同的。就我而言,我想收集一组我想并行执行的昂贵 API 调用的结果。
说我有:
哪里q
是相同的值。
我想要一个List[Result]
或类似的(显然List[Option[Result]]
很好),我希望这两个昂贵的操作并行发生。
自然,一个简单的List
构造函数不会并行执行:
并行集合可以提供帮助吗?还是我应该寻找期货之类的东西?我能想到的使用并行集合的唯一方法似乎很老套:
其实,万事俱备,或许也不是那么糟糕……