哪一个是这两个中最快/最少占用内存的选项:
struct {
int index;
char string[10];
} a[10];
或
struct {
int index[10];
char string[10][10];
} a;
第一个显然更容易使用和实施。我还要提到我会动态分配它们。但哪一个会运行得更快或耗时最少?
谢谢!
答案 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
编辑:那就是说,我同意米兰(在另一个答案) - 不要过早地优化,或者根本不需要。两者都足够快;我之前没有强调这一点,因为我认为你可能需要它用于嵌入式系统,这可能很重要。