PHP字符串串联的性能开销


Performance overhead for PHP string concatenation?

我即将开始一个新项目,并将使用编码标准。我一直写这样的SQL语句:

$sql = sprintf("INSERT INTO users (name) VALUES ('%s')", $name);

我想知道使用是否会获得任何性能

$sql = "INSERT INTO users (name) VALUES ('".$name."')";
$sql = "INSERT INTO users (name) VALUES ('$name')";

还有:这种性能差异是否会随着更多"参数"的添加而波动(如第一行代码)?

谢谢。

是的,这将提高性能。sprintf是一个附加函数调用,必须扫描字符串中的%s,这需要额外的时间。

使用字符串concat运算符(.)的第二种选择速度更快,但由于PHP执行的其他优化,第三种选择(仅将字符串变量放在字符串中)速度最快。

无论如何,在研究PHP如何处理字符串连接及其执行方式时,您永远不应该创建这样的sql查询,因为它会向sql注入打开代码。首先将mysql_real_eescape()应用于参数,或者使用准备好的语句。

我的测试没有显示$a $b$a . ' ' . $b快,有时甚至更慢。

但两者都是边缘化的。通常,当您有三个或三个以上的变量时,您需要sprintf