如何解决为什么Clang-Tidy建议采用更大的对齐方式?
给出以下c语言结构定义:
typedef struct PackTest {
long long a;
int b;
int c;
} PackTest;
Clang-Tidy给出以下消息:
由于对齐不良,访问结构'PackTest'中的字段效率低下;当前对齐为8个字节,但建议对齐为16个字节
我知道为什么将结构体对齐为8个字节,但是我不知道建议是否有效以及为什么。
解决方法
某些特殊的专用汇编指令可能有对齐要求(例如,x86 非标量 SSE指令严格要求对齐到16个字节的边界)。当其他指令用于未对齐16个字节边界的数据时(例如x86 SSE2),其吞吐量可能会较低。
这类指令通常用于根据处理器的硬件功能执行积极的优化。总体而言,您收到的消息仅在这些情况下有用(即,如果您实际上打算利用这些说明)。
另请参阅:
- What does alignment to 16-byte boundary mean in x86
- Why and where align 16 is used for SSE alignment for instructions?
最后,我将引用Rich中的the above comment,因为它们确实很有意义:
,具有没有可笑地过度对齐的标准结构没有“异常”。出于非常专业的目的,您可能想要一个过度对齐的对象,但是如果对其进行标记,则大多数标记的对象都是错误的,并鼓励您编写效率低下且无缘无故的代码。
您可以为 Clang-Tidy 添加 if imageName.contains("file"){
do {
let fileURL = URL(string: imageName)!
let imageData = try Data(contentsOf: fileURL)
backgroundImageView.image = UIImage(data: imageData)
} catch {
print("Error loading image : \(error)")
}
}else{
backgroundImageView.image = UIImage(named: imageName)
}
以禁用此警告
来源:https://www.mail-archive.com/cfe-commits@lists.llvm.org/msg171275.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。