【发布时间】:2023-03-22 15:37:02
【问题描述】:
我目前有执行以下操作的 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 可能不是)。
从下面的评论中添加:我希望有更多的线程安全方式在循环期间向映射添加新值,以便任何后续循环都可以使用预先计算的值。计算在时间上非常昂贵。
【问题讨论】:
-
您的密钥是什么类型的数据?
-
我正在使用字符串。更具体地说,我在键数组上使用 mat2str 的结果。
标签: matlab parallel-processing memoization