• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

函数返回引用为什么会比返回值慢呢?写时拷贝为什么会比引用慢呢?

php 搞代码 4年前 (2022-01-25) 28次浏览 已收录 0个评论
文章目录[隐藏]
<code>$array = range(1, 10000);function test1($array){    return $array;}function &test2($array){    return $array;}$start = microtime(true);for ($i=0; $i < 10000; $i++) {     $arr = test1($array);    $arr[$i] = 'new';}$end = microtime(true);echo "Cost ".($end - $start)."\n";$start = microtime(true);for ($i=0; $i < 10000; $i++) {     $arr = test2($array);    $arr[$i] = 'new';}$end = microtime(true);echo "Cost ".($end - $start)."\n";</code>

输出结果:
Cost 5.5163149833679
Cost 6.3323628902435
虽然差距不大

本文来源gaodai.ma#com搞##代!^码@网*
搞gaodaima代码

回复内容:

<code>$array = range(1, 10000);function test1($array){    return $array;}function &test2($array){    return $array;}$start = microtime(true);for ($i=0; $i < 10000; $i++) {     $arr = test1($array);    $arr[$i] = 'new';}$end = microtime(true);echo "Cost ".($end - $start)."\n";$start = microtime(true);for ($i=0; $i < 10000; $i++) {     $arr = test2($array);    $arr[$i] = 'new';}$end = microtime(true);echo "Cost ".($end - $start)."\n";</code>

输出结果:
Cost 5.5163149833679
Cost 6.3323628902435
虽然差距不大

拷贝需要开辟空间初始化之类的,相当于创建几个新的对象。
而引用只是一个指针。

首先、根据 PHP: 引用返回 – Manual 的解释,以上两种写法并没有什么区别,你可以理解没有加 & 的那个函数底层引擎是会优化的,所以可能确实快了一点点,所以手册上也是不推荐的。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:函数返回引用为什么会比返回值慢呢?写时拷贝为什么会比引用慢呢?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址