zoukankan      html  css  js  c++  java
  • cacheline相关优化手段

    1. cacheline对齐

    避免读取的数据跨越2个cacheline,结构体可以cacheline对齐,连续的数组可以尝试首地址cacheline对齐,但可能造成浪费。

    2. 分支预测

    可以使用likely/unlikely这样的宏,提高cacheline命中的概率。

    存在多个条件判断时,根据几率调整每个分支的顺序。

    3. 延迟计算

    最近用不到的变量不要进行初始化,和编程规范可能相背。

    4. 寄存器参数

    尽量使用寄存器作为函数参数。

    5. 相关代码相邻

    相关的代码或文件尽量相邻,相关的代码编译到一起,提高cache的命中率。

    6. 代码冗余

    减少冗余代码与死代码。

    7. 读写分离

    两个无关的变量,一个读,一个写,而这 两个变量在一个cache line里面。那么写会导致cache line失效。

    8. 数据预取

    数据预取的依据是预取的数据 马上会用到,这个应该符合空间局部性(spatial locality),但是如何知道预取的数据会被用到,这个 要看上下文的关系。一般来说,数据预取在循环里面用的比较多,因为循环是最符合空间局部性的代码。

    可以使用__builtin_prefetch()等函数。

  • 相关阅读:
    信息检索笔记
    北大课程(变态心理学)
    My life
    Excel小技巧(随机点名)
    Flask基础
    CTF
    GDB
    LD_PRELOAD
    AFL-数据变异
    AFL入门
  • 原文地址:https://www.cnblogs.com/HadesBlog/p/13741551.html
Copyright © 2011-2022 走看看