私は、Grasshopper (Rhino3D の一部) と呼ばれるパッケージ内で C#.net を使用して、いくつかの数学演算を最適化する実験を行っています。操作は非常に単純ですが、実行する必要があるリストは大きく、さらに大きくなる可能性があります。
C# スクリプトで Parallel.ForEach とリストを使用していますが、得られる最終結果の数が予想よりも少なくなっています。これはおそらく、list.add がスレッド セーフではない (または、私が構築しているソフトウェア内でスレッド セーフではない) ためです。
private void RunScript(double z, int x, List<double> y, ref object A)
{
List<double> temp = new List<double>();
double r;
System.Threading.Tasks.Parallel.ForEach(y, numb =>
{
r = Math.Pow((numb * x), z);
temp.Add(r);
});
A = temp;
CPU マルチスレッドを使用して、数百の値に対してこの単純な数学演算を実行する簡単で効率的な方法を見つけてください (または、GPU CUDA に関する提案がある場合)。
私が知る限り、通常の C#.Net/Python/VB.Net と同じように動作するため、あいまいで特定のソフトウェアに悩まされないことを願っています。