2011-11-02 102 views
1

什么更有效? 8个阵列int8 myArrayx[100],或多维int8 myArray[8][100]?我正在为Microchip PIC微控制器使用CCS编译器,并且我需要尽可能快地写入缓冲区,这就是我的问题的原因。效率:8阵列vs多维阵列

+0

你为什么不尝试写出它看起来最自然的方式,然后决定是否需要改进? – cnicutar

+0

为了提高速度,请使用指向数组元素的指针,该指针只需要为每次连续访问增加或增加,而不是需要乘法的索引myArray [i]样式。 – Martin

+0

如果您想使用PIC并获得性能,不惜一切代价避免C.图片本身足够慢。您的问题的答案是尝试两种方式并进行反汇编,并查看正在生成的内容。 PIC或任何平台。通过PIC可以计算周期,其他平台需要更多的工作和知识才能研究装配,因此对于您的平台,只需查看就可以看到性能差异。除了以下问题外,没有其他人能够普遍回答您的问题:“取决于...” –

回答

6

我不得不认为,多维数组会更快。你有更好的机会(可能有保证吗?)把这些数组放在相邻空间的内存中,而你不能确定这8个单独的数组将在内存中“关闭”在一起 - 这会伤害你的参考位置。

+1

位于具有同步存储器系统的PIC中的位置? –

3

这取决于您将访问的项目最多。 但可能它并不重要。下面的内存映射分配只有不同之处。

3

取决于数组的分配方式。如果在堆上,那么单个multidim。由于引用的局部性,阵列在许多目的上会更快,并且您可以一次分配数组,这更简单并且开销更少。

如果在堆栈或static上,生成的实际二进制代码可能完全相同。

(我不知道你实际上有一个堆在你的设备,但我想我反正提到它;)