use*_*828 3 c++ compiler-construction
我不明白的是,为什么我们必须在大于4字节的边界上对齐内存中的数据,因为所有其他边界都是4的倍数.假设CPU在一个周期内可以读取4个字节,那么它基本上没有区别.性能,如果该数据大8字节,并在4字节/ 8字节/ 16字节等对齐等.
当x86 CPU读取a时double,它在一个周期内读取8个字节.当它读取SSE向量时,它读取16个字节.当它读取AVX向量时,它读取32.
当CPU从内存中获取高速缓存行时,它还至少读取32个字节.
您假设CPU每个周期读取4个字节是错误的.