問題タブ [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 - 並列コレクションを使用するとこれが速くならないのはなぜですか?
並列コレクションを少しテストしたかったので、次のコード行を (REPL で) 使用しました。
に対して:
ただし、並列バージョンは高速ではありません。実際、それは少し遅くさえ感じます (しかし、私は実際にそれを測定していません)。
誰かがそれについて説明していますか?
編集 1: はい、マルチコア プロセッサを使用しています
編集 2: OK、私は自分で問題を「解決」しました。の実装がisProbablePrime
問題であり、並列コレクションではないようです。素数性をテストする別の関数に置き換えisProbablePrime
たところ、期待どおりのスピードアップが得られました。
scala - 並列コレクションでは、集約は順序を尊重しますか?
scala では、アイテムの並列 Iterable があり、それらを反復処理して、何らかの方法で結果を集計したいと考えていますが、順序どおりです。ユース ケースを単純化して、整数の Iterable から始めて、それらの文字列表現を並列に連結し、結果を順番に並べたいとします。
これは、折り畳みまたは集約のいずれかで可能ですか? ドキュメントからは、どのメソッドが並列化されて機能するが順序を維持するかは不明です。
scala - 並列コレクションで .seq を呼び出すと、すべてのスレッドが確実に結合されますか?
次のように、 を呼び出すコレクションがあります.par
。
println を呼び出す.seq
前に、続行する前にすべてのスレッドが結合され、すべてのマップが完了することを保証しますか?
.net - ConcurrentBag が List より優れているのはいつですか?
外部 ConcurrentBag を設定するために Parallel.Foreach を使用しています。共通のリストも使用しようとしましたが、すべて正常に動作します。
私は運が良かったのですか、それとも ConcurrentBag の特別な範囲を逃したのですか?
scala - ParVector マップが並行して実行されていません
次のようなコードが少しあります。
ParVector は約 12 要素の大きさです。すべての作業がメイン スレッドで行われていることに気付いたので、スタック トレースをトレースすると、次の行 (以下のリンク) で、ifParallel が false (CanBuildFrom から) であることがわかりました。それが間違っている理由と、それを助けるために私にできることについてのヒントはありますか?
scala - 同じ入力に対して呼び出して結果を収集したい高価な操作がいくつかある場合、Scala の並列コレクションを使用できますか?
同様の質問を見つけましたが、高価な操作が常に同じである、より単純なケースと思われるものがあります。私の場合、並行して実行したい高価な API 呼び出しの一連の結果を収集したいと考えています。
私が持っているとしましょう:
はq
同じ値です。
または同様の操作が必要でList[Result]
(明らかList[Option[Result]]
に問題ありません)、2 つの高価な操作を並行して実行したいと考えています。
当然、単純なList
コンストラクターは並行して実行されません。
並列コレクションは役に立ちますか? それとも、代わりに先物などに目を向けるべきですか?並列コレクションを使用して私が考えることができる唯一のアプローチは、ハッキーに思えます:
実際、すべてが同じなら、それほど悪くはないかもしれません...