A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马林雷 中级黑马   /  2014-6-10 16:38  /  1421 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马林雷 于 2014-6-10 21:01 编辑

我知道foreach遍历速度会快很多,原因是什么?好像一个是栈中一个是在寄存器中!

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
foreach的变量是一个集合,存在托管堆中,在遍历时,指针下移,取出每个值。而你说的寄存器是计算机原理中的概念:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。不要混淆。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报 1 0
黑马.net 发表于 2014-6-10 16:57
foreach的变量是一个集合,存在托管堆中,在遍历时,指针下移,取出每个值。而你说的寄存器是计算机原理中 ...

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

还是这是一个栈由系统自动生成一个1M或2M的内存?
回复 使用道具 举报
现在我懂了!一个是线程堆栈一个是托管堆!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马