gpt4 book ai didi

PHP回显性能

转载 作者:行者123 更新时间:2023-12-03 22:58:57 25 4
gpt4 key购买 nike

这些命令中哪一个执行得最好?最差?为什么?

echo 'A: '.$a.' B: '.$b.' C: '.$c;

echo 'A: ', $a, ' B: ', $b, ' C: ', $c;

echo "A: $a B: $b C: $c";

最佳答案

echo 'A: ', $a, ' B: ', $b, ' C: ', $c;

将是最快的,因为这里字符串的所有部分都直接复制到输出流,而其他变体将首先连接字符串部分。 “串联”意味着必须为字符串的每一部分分配一个新的内存块,并将之前的字符串复制到其中。

我用下面的例子来说明

echo 'Hallo', ' ', 'World', '!', "\n", 'How are you?';
// vs.
echo 'Hallo' . ' ' . 'World' . '!' . "\n" . 'How are you?';

第一个将 5 个字节 + 1 个字节 + 5 个字节 + 1 个字节 + 1 个字节 + 12 个字节复制到输出流,因此复制了 25 个字节。第二个创建一个包含 5 个字节的字符串,然后创建一个包含 6 个字节的字符串并将 5 + 1 个字节复制到其中,然后创建一个包含 11 个字节的字符串并将 6 + 5 个字节复制到其中,然后创建一个包含 12 个字节的字符串字节并将 11 + 1 个字节复制到其中,然后创建一个包含 13 个字节的字符串并将 12 + 1 个字节复制到其中,然后创建一个包含 25 个字节的字符串并将 13 + 12 个字节复制到其中,然后最终复制这 25 个字节字节到输出缓冲区。这将复制 92 个字节并完成更多的内存分配。

但实际上,您不应该关心这个。我非常怀疑您的应用程序的瓶颈将是 echo 性能;)

但我使用带有逗号而不是连接运算符的 echo 仍然是有原因的:逗号是所有 operator precedences 中最低的。 .这样你就不必写括号了。

例如这会起作用:

echo 'The script executed in ', microtime(true) - $startTime, ' seconds';

虽然这不会按预期工作(我认为这是未定义的行为):

echo 'The script executed in ' . microtime(true) - $startTime . ' seconds';

关于PHP回显性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com