中易网

CPU跨切循环层是什么意思?

答案:2  悬赏:60  
解决时间 2021-04-28 06:40
  • 提问者网友:我稀罕你
  • 2021-04-27 21:15
来只大牛吧
最佳答案
  • 二级知识专家网友:劳资的心禁止访问
  • 2021-04-27 22:34
此概念本身是说:由外层循环进入内层循环是要重新初始化循环计数器的,包括保存外层循环的计数器和加载内层循环计数器,退出内层的时候再恢复外层循环计数器。把长循环放在里面可以显著减少这些操作的数量。所以,在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环放在外层,这样就可以减少cpu跨切循环层的次数,从而优化程序性能。
全部回答
  • 1楼网友:余生继续浪
  • 2021-04-27 23:48
这个“跨循环层”的概念本身是说,由外层循环进入内层循环是要重新初始化循环计数器的,包括保存外层循环的计数器和加载内层循环计数器,退出内层的时候再恢复外层循环计数器。把长循环放在里面可以显著减小这些操作的数量。      但是另一方面还要注意数据结构本身的效率。 这里涉及到数据的cache命中的概念。如果你的“跳读”会跨越cache交换块,甚至page边界的话,就会造成cpu数据cache重新批量装载数据,甚至从虚拟内存中恢复磁盘数据,这当然严重影响效率。 比如有一个很大的二维数组。其本身是按照行的方式存储的,尽管这个数组的行数远远大于列的数目。如果我们按照列的方式来访问数据的话(即第一次的外层循环会访问这个数组的,所有行的第一列的数据)。这样就会产生跨越cache交换块甚至page边界的问题。这时候我们就需要考虑数据的存储结构了。  在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少cpu跨切循环层的次数。例如以下右侧示例的效率比左示例的高。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息