![]() |
1
33
Zend引擎使用copy-on-write,当您自己使用引用时,它会增加一些额外的开销。只能找到 this mention 但在写作的时候, the manual 包含其他链接。 (编辑)手册第页 Objects and references 包含关于对象变量与引用之间的区别的更多信息。 |
![]() |
2
69
在调用字符串为20KB的函数的100000次迭代的测试中,结果是: 只读取/使用参数的函数
用于写入/更改参数的函数
结论
|
![]() |
3
27
我对此做了一些测试,因为我不确定给出的答案。 我的结果表明,通过引用传递大型数组或字符串的速度要快得多。
以下是我的结果:
Y轴(运行)是在1秒内调用函数的次数*10 对每个功能/变量重复测试8次。 下面是我使用的变量:
这些是功能:
|
![]() |
4
6
我已经尝试了将10k字节字符串传递给两个相同函数的值和引用。一个按值接受参数,另一个按引用接受参数。它们是常见的函数-接受参数,进行简单的处理并返回一个值。我同时打了10万次电话,发现引用并不是为了提高性能而设计的——引用的利润接近4-5%,只有当字符串足够大时才会增长(10万次及更长时间,这就提高了6-7%)。所以,我的结论是 不要用参考资料来提高工作效率,这是不适合的。 我使用了5.3.1版的PHP |
![]() |
5
4
我很确定不,不快。 此外,它在手册中特别指出,不要试图使用引用来提高性能。 编辑:找不到它说的地方,但它在那里! |
![]() |
6
1
没有什么比测试代码更好的了
最后的结果!数组越大(或调用次数越多),差异就越大。因此,在这种情况下,通过引用调用更快,因为值在函数内部发生了更改。 否则,“按引用”和“按值”之间没有真正的区别,编译器足够聪明,如果不需要的话,每次都不创建新的副本。 |
![]() |
7
0
我试着用一个基于我正在研究的项目的真实例子作为基准。和往常一样,这些差异微不足道,但结果有些出人意料。对于我看到的大多数基准,被调用的函数实际上并没有改变传入的值。我对它执行了一个简单的str_replace()。
旁路参考测试代码 除了
以秒为单位的结果(1000万次迭代):
差异是每个函数调用的毫秒数的一小部分,但是在这个用例中,在php 5和php 7中通过引用的速度更快。 (注意:php 7测试是在更快的机器上执行的——php 7更快,但可能不会更快。) |
![]() |
8
-2
传递对象时不需要添加&运算符。在php 5+中,对象无论如何都是通过引用传递的。 |
![]() |
Tono Nam · 无法在golang中通过引用修改对象 2 年前 |
![]() |
uzivanky · 课堂上不同的“this” 6 年前 |
![]() |
Henry Marshall · 通过引用替换JS对象[重构工作代码] 7 年前 |
|
user9441223 · 通过引用传递对象并将其存储为成员变量 7 年前 |
![]() |
Enryu · 参考变量参数vs局部参考变量[关闭] 7 年前 |
![]() |
Tryer · 计算不同类别对象的数量 7 年前 |