谈谈cpu cache line对程序代码的影响
2023-12-27 18:54:48
为了解决cpu运行速度和内存速度不匹配的问题,引入了cpu三级缓存,L1,L2,L3.其中缓存是以缓存行为基本单位的,每次取数据都是取一个缓存行的数据,批量读取。所以肯能会出现多个cpu共享缓存行时,需要进行同步数据的工作。下面就是通过将共享数据放入两个缓存行来提高运行速度的例子,Java中的Thread类也有@Contented也是类似作用。
注意:一般64位的计算机,缓存行为64个字节。
public class TestCpuCacheLine {
volatile long num = 0;
// long l1, l2, l3, l4, l5, l6, l7;
volatile long num1 = 0;
public static void main(String[] args) throws Exception{
long start = System.currentTimeMillis();
TestCpuCacheLine testCpuCacheLine = new TestCpuCacheLine();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 10000000; i++) {
testCpuCacheLine.num++;
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 10000000; i++) {
testCpuCacheLine.num1++;
文章来源:https://blog.csdn.net/weixin_41751625/article/details/135251441
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!