美文网首页C/C++
C/C++申请对齐内存的技巧

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

作者: cx7 | 来源:发表于2019-04-22 15:54 被阅读0次

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

    cxdeMacBook-Pro:build cx$ getconf PAGE_SIZE
    4096
    

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

    template <typename T>
    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++申请对齐内存的技巧

        本文链接:https://www.haomeiwen.com/subject/qlaygqtx.html