【发布时间】:2013-11-05 23:58:25
【问题描述】:
如果我有一个表示 MxN 矩阵内容的一维数组(其中最不重要的维度在内存中是连续的),我如何在转置它时充分利用缓存(放置最重要的内容连续内存中的维度)。这个问题可以改写如下;
如果我可以在读取连续内存但写入随机访问位置或从随机访问位置读取并写入连续内存之间进行选择,所有条件都相同,我应该选择哪个?
【问题讨论】:
-
不在答案中,因为我还没有实际测试过这个(有趣的问题),但如果我要与平台无关并且必须选择,我会连续写。大多数都有某种形式的写入组合,可能值得利用。
-
选择一个基准.. 确保它在适当接近最终目标的环境中运行。这个问题在编写时确实有很多猜测,但是 如果 包含基准(和代表性代码),那么它可能是一个好问题 - 也就是说,可以查看特定的代码和特定的环境。
-
@user2864740 好的,我没有意识到这个问题会如此依赖于平台/实现。当我回到家时,我会尝试用准确的代码更新(对不起,我宁愿把头埋在马桶里,也不愿从 iPad 上引用代码)