黑马程序员技术交流社区

标题: for和foreach [打印本页]

作者: 马林雷    时间: 2014-6-10 16:38
标题: for和foreach
本帖最后由 马林雷 于 2014-6-10 21:01 编辑

我知道foreach遍历速度会快很多,原因是什么?好像一个是栈中一个是在寄存器中!
作者: 黑马.net    时间: 2014-6-10 16:57
foreach的变量是一个集合,存在托管堆中,在遍历时,指针下移,取出每个值。而你说的寄存器是计算机原理中的概念:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。不要混淆。
作者: 马林雷    时间: 2014-6-10 17:58
黑马.net 发表于 2014-6-10 16:57
foreach的变量是一个集合,存在托管堆中,在遍历时,指针下移,取出每个值。而你说的寄存器是计算机原理中 ...

如果在堆中那么只要自己申请的空间够大,为什么都不用foreach,遍历速度比for快那么多!为什么我看的说foreach只能遍历小存储内存的对象!
作者: 马林雷    时间: 2014-6-10 18:00
马林雷 发表于 2014-6-10 17:58
如果在堆中那么只要自己申请的空间够大,为什么都不用foreach,遍历速度比for快那么多!为什么我看的说fo ...

还是这是一个栈由系统自动生成一个1M或2M的内存?
作者: 马林雷    时间: 2014-6-11 09:43
现在我懂了!一个是线程堆栈一个是托管堆!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2