如果可能的话,在PHP中消除额外的变量会更好吗?

时间:2009-12-27 13:58:21

标签: php optimization

我知道很多人会称之为微观优化,是的,但是知道这样的事情也很好。现在我的问题,在我下面的第一个例子中你会看到我有一个包含mysql查询的变量集然后我有另一行运行带有上述变量mysql查询的函数。在我的第二个例子中,我在一行中完成所有操作,我假设没有真正的速度增益,但这可能有助于降低内存使用量?

//example 1
$sql= 'UPDATE users SET setting_online=0 WHERE user_id=' .$_SESSION['user_id']; 
Database::executeQuery($sql);

//example 2
Database::executeQuery('UPDATE users SET setting_online=0 WHERE user_id=' .$_SESSION['user_id']);

5 个答案:

答案 0 :(得分:3)

可能是的,但那些40或50字节永远都不重要。

但是减少变量的数量有一个完全不同的原因:它减少了程序员为了遵循程序而必须跟踪的状态量 - 这使你的工作更容易,因此代码更多可维护性。

答案 1 :(得分:2)

我会将可读性/可理解性作为目标。如果使用额外的变量提高可读性,那么使用它们。如果删除它们会提高可读性,请将其删除。

此外,即使在没有SQL注入的情况下,也可以在任何地方使用参数化查询。这是一个很好的习惯。

答案 2 :(得分:0)

查看memory_get_usage(),然后对其进行基准测试并告诉我们。

就个人而言,我认为它没有任何重大影响。您的示例中的查询很长,并且在执行之前将其分配给变量会使代码更容易为我阅读。

答案 3 :(得分:0)

是示例2将有助于降低内存使用量

答案 4 :(得分:0)

无论结果字符串存储在内存中。无论是作为传递给函数的东西,还是作为变量,然后传递给函数。

这在很大程度上取决于php将字符串两次存储到一个名为sql的变量中,第二次是按值传递。由于php(更具体地说是Zend引擎)使用“copy on write”,因此您不会将字符串存储两次。只有在修改字符串时才会复制它。

在第一个示例中,您将使用的唯一额外内存是对该副本的额外引用。这是内存中的最小添加,所以是的,第一个例子可能会使用一些额外的32位字。这可以忽略不计,如果它很重要,你可能不应该在php中开发。在内存使用方面,你的控制力太大了,如果有几个32位字很重要,你可能应该用C编写你的代码。)。