C/C++申请对齐内存的技巧

申请内存时,申请的大小是4k的整倍数时,性能最好.
因为*nix的内存页的大小是4k的,可以通过读取系统配置验证这一点

cxdeMacBook-Pro:build cx$ getconf PAGE_SIZE
4096

申请大块内存时,通过简单的字节数校验,有助于提高程序性能.

template 
T alignSize(T bytes) {
    T ret = bytes;
    if (ret & 0xfff) { //0xfff = 4095 如果与4095不为0 说明不是4096对齐的 需要修改
        ret &= ~0xfff; //与~0xfff会把低12位清0
        ret += 0x1000; //0x1000 = 4096 清0后加上4k大小
    }
    return ret;
}

int s1 = 4095, s2 = 4097;
int s3 = alignSize(s1);
int s4 = alignSize(s2);
输出:
cxdeMacBook-Pro:align cx$ ./a.out
s3 : 4096
s4 : 8192

你可能感兴趣的:(C/C++申请对齐内存的技巧)