【问题标题】:Does declaring an unnecessary variable in PHP consumes memory?在 PHP 中声明一个不必要的变量会消耗内存吗?
【发布时间】:2013-01-25 10:48:26
【问题描述】:

我通常在 PHP 中这样做是为了提高可读性,但我不知道它是否会消耗内存或有任何其他问题?假设我有这个代码:

$user = getUser(); // getUser() will return an array

我能做到:

$email = $user["email"];
sendEmail($email);

如果不声明变量 $email 我可以这样做:

sendEmail($user["email"]);

哪个更好?认为这只是一个非常简单的例子。

【问题讨论】:

  • 当然会消耗内存...但一般来说可读性比内存使用更重要
  • @MarkBaker:我完全同意你的看法。但恕我直言,我还想提一下,这也让事情变得更加清晰。是的,它消耗内存,但与它提供的清晰度相比,它消耗的内存量非常少。 Luis 明确提到这只是一个小例子。意味着应用程序很大。通过使用更多的内存,如果代码更清晰,我不介意像 Luis 提到的那样定义一些变量。我也很想读你的文章。
  • @DevangRathod 认真的吗?如果您关心每个 CPU 周期,则根本不应该使用 PHP。 PHP 脚本也不会在浏览器中运行。恕我直言,您似乎不知道自己在说什么。
  • 如果应用程序正在消耗大量内存,那么 Luis 确实需要准确识别内存被消耗的位置,而不是简单地到处寻找一点点,否则无论如何都会被释放超出范围
  • @fab 你是对的,我犯了一个错误

标签: php performance variables


【解决方案1】:

不要为了节省几个字节而降低代码的可读性。这不会为您节省更多,即使$email 是一个 100 MB 的字符串,因为 PHP 内部使用 copy on write 机制:变量的 content 不是除非你改变它,否则复制它。

例子:

$a = str_repeat('x', 100000000); // Memory used ~ 100 MB
$b = $a;                         // Memory used ~ 100 MB
$b = $b . 'x';                   // Memory used ~ 200 MB

【讨论】:

  • 对吗? Quora engineer's answer 似乎与此相矛盾....
  • 我不知道“Quora 工程师”是什么,但他所说的只是每个变量都有大约 140 字节的内存开销,无论数据如何。这一点与我的观点并不矛盾。
  • 只是第二个“~100 MB”比第一个“~100 MB”多出大约140 Bytes ;-)
【解决方案2】:

是的!变量创建存储区域,以便您可以使用和操作它们。如果在这种情况下未使用,则会发生存储消耗。 sendEmail($user["email"]); 会是更好的方法。但它不是编写没有变量的代码的好方法。通过变量,您可以追踪实际错误(如果有),它还有助于提高可扩展性和可读性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 2014-04-27
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多