【发布时间】:2012-01-23 18:20:06
【问题描述】:
今天我遇到了一种情况,我需要确定由大约 40 个元素组成的整个结构是否为零 - 这意味着每个元素都为零。
在考虑如何使其尽可能快速和高效时,我想到了 3 种不同的方法:
- 将每个元素与零进行比较,得到 40 个 if 语句。
- 分配一个类似的结构,该结构已经归零,并
memcmp它与结构。 - 将结构包装在一个联合体中,并使用一个足够大的类型来覆盖所有结构。
例如
typedef union {
struct {
uint8_t a;
uint8_t b;
}
uint16_t c;
} STRUCTURE_A;
然后将其与零进行比较。
我想知道您对这些解决方案的看法,您认为哪种解决方案最快、最有效。
如果您有更好的方法,请告诉我...
谢谢。
【问题讨论】:
-
在
if语句中简单地检查整个结构有什么问题,就像您可能会检查零标志一样? -
您是否分别实施了三种不同的方法并比较了它们的性能?你发现了什么?
-
由于可能的填充,除了比较每个字段之外,我看不到一种可移植的方式
-
@Platinum - 填充位、未初始化的成员(可能并非所有有效数据配置都需要)、在概念上为“假”时可能为非零的成员,上述任何一项在随着您的应用程序扩展的未来。
-
尽可能高效是否重要?
标签: c data-structures comparison