php递归处理地址,PHP具有处理递归的能力

好的,我会捅它.

第一:“堆栈”是用于标准C/C++类型程序中的函数调用跟踪的区域.它是操作系统和编程语言约定在内存中定义的一个地方,它被视为一个堆栈(数据结构).当你调用C函数fibbonaci(int i)时,它将变量i和已经忙于调用它的函数的返回地址放在堆栈上.这需要一些记忆.完成该函数调用后,内存再次可用.堆栈的大小有限.如果您在其上存储非常大的变量并进行许多递归调用,那么您可能会用完房间.对?

所以…..

显然,Zend有两种分配数据的方法:在堆上(一个更通用的区域来请求内存)和堆栈,并且堆栈是一个更有效的地方,因为事物的编程方式. (我不知道为什么,但我可以猜到.可能存在非常低级别的缓存问题 – 我希望堆栈在L1或L2缓存中比堆中的任意内存更有可能,因为CPU是很可能非常频繁地使用该区域 – 实际上每次调用一个函数时.堆数据访问也可能存在分配开销.)

我认为,在这种情况下,“密集型”数据是指很可能很快或非常频繁使用的数据.对这些变量使用更快的基于堆栈的分配是有意义的.你肯定会很快使用什么样的变量?那么,函数的参数怎么样?你很可能会使用它们:否则你为什么要打扰它们呢?它们也可能更像是小数据项(引用大量数据结构而不是大量数据结构本身 – 因为这会给你复制开销等等).因此堆栈可能对于为大多数PHP程序员存储PHP函数参数是有意义的……但它在递归时会更快失败.

希望至少回答“这是什么意思?”.对于您的递归性能问题:自己进行基准测试;它可能取决于你尝试做什么样的递归.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值