【发布时间】:2011-04-02 18:42:35
【问题描述】:
我正在寻找一种数据结构,它允许我在内存中连续存储一个M-by-N 2D 值矩阵,以便内存中任意两点之间的距离近似于之间的欧几里得距离矩阵中的那些点。也就是说,在作为M * N 元素的一维数组的典型行主要表示中,同一行中的相邻单元 (1) 和相邻行中的相邻单元 (N) 之间的内存距离不同。
我想要一种可以减少或消除这种差异的数据结构。真的,这样一个结构的名字就足够了——我可以自己实现它。如果答案碰巧涉及这类事情的库,那也是可以接受的,但它们应该可以与 C++ 一起使用。
我有一个应用程序需要在没有硬件加速的情况下执行快速图像卷积,虽然我知道这类事情的常用优化技术,但我觉得有一种专门的数据结构或数据排序可以提高性能。
【问题讨论】:
-
@Martin:不,这是他想要避免的。
-
@Martin, @Oli:当然不是功课。不仅我现在不上课,而且我大学的任何班级都不会布置如此有用的家庭作业。你认为我在哪里回答了我自己的问题?
-
@Larry:好点子。我认为任何拥有 1840 代表的 SO 用户都不会首先了解计算机。
-
@Larry:我一直在放暑假,直到 9 月初。你可以认为你喜欢我什么,你是否正确完全取决于你。我不需要得到社区成员的认可,尤其是那些似乎不尊重我的人。我真正需要的是解决我当前的问题,学习新的东西,享受编程的乐趣,就像我一生中大部分时间都在做的那样。让我们都文明一点。
-
@Larry:我同意 SO 声誉本身并不是衡量能力的可靠指标。无论如何,由于内存和处理器的相互作用,当前计算机中的内存绝对不是真正的随机访问:编写糟糕的代码太容易导致几乎每次操作都会导致缓存未命中,这可能会使性能下降一个数量级。这基本上是一个优化问题,而这个问题本身就暴露了我对计算的某种基本误解的想法简直是荒谬的。
标签: c++ data-structures image-processing matrix