C中的数组结构或数组结构

时间:2010-12-19 13:08:15

标签: c arrays structure

哪一个是这两个中最快/最少占用内存的选项:

struct {
int index;
char string[10];
} a[10];

struct {
int index[10];
char string[10][10];
} a;

第一个显然更容易使用和实施。我还要提到我会动态分配它们。但哪一个会运行得更快或耗时最少?

谢谢!

3 个答案:

答案 0 :(得分:3)

struct {
    int index;
    char string[10];
} a[10];

将为每个a[]项引入填充。

第二种解决方案只会引入一次填充。

如果您要在a[]中分配大量项目,那么您将支付更大的域名来支付费用(更不用说额外的解除引用)。

答案 1 :(得分:2)

不要过早优化。使用更容易理解/维护的那个。由于这是C,性能差异几乎不会引人注意。

答案 2 :(得分:1)

第二个可能是内存较小的,因为上面的sizeof结构是8,而不是5因为​​填充(假设int是32位)。

至于哪个更快,我会说这取决于你在做什么;第二个是数据导向设计的典型例子(不要与数据驱动设计混淆)。请参阅此文章:http://gamesfromwithin.com/data-oriented-design

编辑:那就是说,我同意米兰(在另一个答案) - 不要过早地优化,或者根本不需要。两者都足够快;我之前没有强调这一点,因为我认为你可能需要它用于嵌入式系统,这可能很重要。