Tag: cpu cache

优化Java对象以提高CPU缓存行的效率

我正在写一个库,其中: 它需要在各种不同的平台 / Java实现上运行(常见的情况可能是使用Windows或Linux的Intel 64位计算机上的OpenJDK或Oracle Java) 实现高性能是一个优先事项 ,因为我关心对象访问中的CPU缓存行效率 在某些区域,将遍历/处理相当大的小对象图形 (假设大约1GB) 主要工作量几乎完全是读取 读取将分散在对象图中,但不是完全随机的(即,将存在重要的热点,偶尔读取到不常访问的区域) 多个线程将同时访问 (但不修改)对象图。 没有锁定,假设不会发生并发修改。 设计小对象是否有一些经验法则/指南,以便在这种环境中有效利用CPU缓存线? 我对正确调整和构造对象特别感兴趣,因此例如最常访问的字段适合第一个缓存行等。 注意:我完全清楚这是依赖于实现的,我需要进行基准测试,以及过早优化的一般风险。 无需浪费任何进一步的带宽指出这一点。 🙂