現在、次のことを行うMatlabコードがあります。
map = collections.Map;
for i = 1:N
key = getKey(i);
if isKey(map, key)
% Return the value stored at key.
else
% Calculate a new value, store it in the map using key.
end
end
このループは実行に時間がかかるため、効率を改善するために parfor を使用したいと考えています。ただし、parfor ループ内でマップに値を割り当てることができないようです。私に何ができるかについてのアイデアはありますか?collections.Map の使用法は確固たるものではありません。並列化されたメモ化が高速で効率的である限り (そしてスレッドセーフである限り、Map はおそらくそうではないことを認識しています)、別の提案を受け入れます。
以下のコメントから追加: ループ中にマップに新しい値を追加するためのスレッドセーフな方法を増やして、後続のループで事前に計算された値を使用できるようにすることを望んでいます。計算は時間的にかなり高価です。