|
|
1
5
这两个例子在速度上应该非常相似,因为编译器在这两种情况下都必须发出几乎相同的位掩蔽指令。为了知道哪一个是最好的,做一些简单的实验。但如果结果没有定论,也不要惊讶;这就是我所预测的。。。
你最好说位字段是
|
|
|
2
5
除非这是一个非常紧密的循环,否则在性能上两者之间没有什么可供选择的,如果性能真的很重要,请使用bools(即可能是32位值)。 使用只有三个这样的单位字段的结构仍然可以填充到 至少 32位。如果您完全专注于尽可能地节省每一位,请查看编译器关于结构中对齐和填充的文档。 支持位字段的一个原因是它们使代码更整洁,并且不应低估可维护性的重要性。与程序员时间相比,计算机时间是便宜的! |
|
|
3
2
针对这类问题的一般建议:设置一个简单的程序,尽可能精确地比较您的情况(操作、硬件等),并自己测量性能差异。 对于这个关于位域与掩蔽的问题,我怀疑您是否会看到显著的性能差异—根据编译器的不同,位域代码可能需要比掩蔽多一个或两个移位。你需要回答的是,在你的应用程序中,这一点是否值得注意。例如,掩码可编程嵌入式代码和桌面应用程序在考虑因素上有很大的不同。 |