下面哪种写法循环语句的效率最高?
答:C++/C循环语句中,for语句使用频率最高,while语句其次,do很少使用。在多重循环中,如果可能,要尽量将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例如(b)的效率比(a)高
扩展:了解CPU指令流水线和指令、数据的Cache命中的概念吗?如果你的“跳读”(eg:二维数组中的读取)会跨越cache交换块,甚至page边界的话,就会造成CPU数据cache重新批量装载数据,甚至从虚拟内存中恢复磁盘数据,这当然严重影响效率
这个“跨循环层”的概念本身是说,由外层循环进入内层循环是要重新初始循环计数器,包括保存在外层循环的计数器和加载内层循环的计数器,退出内层的时候再恢复外层循环计数器。把长循环放在里面可以显著减少这些操作的数量。
另一方面还要注意数据结构本身的效率...