C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 是否可以锁定CPU缓存中的某些数据?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有个问题….
我正在while循环中将数据写入数组.关键是我经常这样做.似乎这篇文章现在是代码中的瓶颈.所以我认为它是由写入内存引起的.这个数组不是很大(像300个元素一样).问题是可以这样做:将它存储在缓存中并仅在while循环完成后才在内存中更新?

[编辑 – 复制自Alex添加的答案]

double* array1  = new double[1000000]; // this array has elements  
unsigned long* array2  = unsigned long[300];
double varX,t,sum=0;
int iter=0,i=0;
while(i<=max_steps)
{
   varX+=difX;
   nm0 =  int(varX);
   if(nm1!=nm0)
   {
        array2[iter] = nm0;  // if you comment this String application works more then 2 times faster :)
        nm1=nm0;
        t = array1[nm0]; // if you comment this String,there is almost no change in time 
        ++iter;
   }
   sum+=t;
   ++i;
}

首先,我要感谢你们所有人的回答.实际上,不放置代码有点蠢.所以我现在决定这样做.

double* array1  = new double[1000000]; // this array has elements  
unsigned long* array2  = unsigned long[300];
double varX,there is almost no change in time 
        ++iter;
   }
   sum+=t;
   ++i;
}

就是这样.如果有人有任何想法会很好.再一次非常感谢你.

诚挚
亚历克斯

解决方法

不是故意的,没有.除此之外,你不知道缓存有多大,所以你不知道什么是适合的.此外,如果允许应用程序锁定部分缓存,则对操作系统的影响可能会对整体系统性能造成破坏.这完全属于我的“你不能这样做,因为你不应该这样做.永远.”

你可以做的是改善你的引用位置 – 尝试安排循环,这样你就不会多次访问这些元素,并尝试在内存中按顺序访问它们.

如果没有关于您的申请的更多线索,我认为不能给出更具体的建议.

大佬总结

以上是大佬教程为你收集整理的c – 是否可以锁定CPU缓存中的某些数据?全部内容,希望文章能够帮你解决c – 是否可以锁定CPU缓存中的某些数据?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。