什么更有效? 8个阵列int8 myArrayx[100]
,或多维int8 myArray[8][100]
?我正在为Microchip PIC微控制器使用CCS编译器,并且我需要尽可能快地写入缓冲区,这就是我的问题的原因。效率:8阵列vs多维阵列
1
A
回答
6
我不得不认为,多维数组会更快。你有更好的机会(可能有保证吗?)把这些数组放在相邻空间的内存中,而你不能确定这8个单独的数组将在内存中“关闭”在一起 - 这会伤害你的参考位置。
+1
位于具有同步存储器系统的PIC中的位置? –
3
这取决于您将访问的项目最多。 但可能它并不重要。下面的内存映射分配只有不同之处。
3
取决于数组的分配方式。如果在堆上,那么单个multidim。由于引用的局部性,阵列在许多目的上会更快,并且您可以一次分配数组,这更简单并且开销更少。
如果在堆栈或static
上,生成的实际二进制代码可能完全相同。
(我不知道你实际上有一个堆在你的设备,但我想我反正提到它;)
相关问题
- 1. JavaScript阵列效率
- 2. 阵列推到多维阵列
- 3. PHP多维阵列中阵列
- 4. PHP多维阵列 - 诉诸阵列
- 5. JSON阵列到阵列PHP多维
- 6. PHP阵列/多维/动态阵列
- 7. 多维JSON阵列
- 8. C++多维阵列
- 9. ObjC二维数组:阵列vs线性阵列vs C数组?
- 10. 1维阵列,以2维阵列
- 11. 从二维阵列到一维阵列?
- 12. 在一个1个维阵列使用array_search多维阵列
- 13. 从多维阵列中PHP
- 14. PHP多维阵列(usort)
- 15. 生成从多维阵列
- 16. 多维导航阵列
- 17. 存储多维阵列
- 18. D3:与更多维阵列
- 19. 从多维阵列中PHP
- 20. PHP多维混合阵列
- 21. 克隆多维阵列
- 22. PHP多维阵列计数
- 23. 多维阵列过滤
- 24. 内爆多维阵列
- 25. Arduino通过多维阵列
- 26. 多维会议阵列
- 27. 多维3D单元阵列
- 28. 打印阵列多维PHP
- 29. PHP:穿越多维阵列
- 30. F#多维阵列类型
你为什么不尝试写出它看起来最自然的方式,然后决定是否需要改进? – cnicutar
为了提高速度,请使用指向数组元素的指针,该指针只需要为每次连续访问增加或增加,而不是需要乘法的索引myArray [i]样式。 – Martin
如果您想使用PIC并获得性能,不惜一切代价避免C.图片本身足够慢。您的问题的答案是尝试两种方式并进行反汇编,并查看正在生成的内容。 PIC或任何平台。通过PIC可以计算周期,其他平台需要更多的工作和知识才能研究装配,因此对于您的平台,只需查看就可以看到性能差异。除了以下问题外,没有其他人能够普遍回答您的问题:“取决于...” –