【问题标题】:Create new variable or reassign the old one - php创建新变量或重新分配旧变量 - php
【发布时间】:2014-08-03 14:22:23
【问题描述】:

在性能方面什么成本更低,为什么?虽然对于第一种情况,它会创建新变量,但在第二种情况下,它不应该首先取消设置 var1 以重新分配它吗?

1) 
$var1 = $someBigArray;
$var2 = $this->someFunction($var1);

// use $var2

2) 
$var1 = $someBigArray;
$var1 = $this->someFunction($var1);

// user $var1

更新

我真的不能这样做,我只是排除了我的其余代码,询问核心部分并使其看起来更简单 $var1 = $this->someFunction($someBigArray);

【问题讨论】:

  • 你为什么不试试这个$var1 = $this->someFunction($someBigArray);
  • 1) 是否会导致性能问题?
  • @웃웃웃웃웃 我更新了qsn,tks
  • @SverriM.Olsen,现在不,但我只想考虑$someBigArray 变得巨大的情况。 tks

标签: php performance variables


【解决方案1】:

你有两个东西,一个是处理另一个是内存。

关于处理:

在 PHP 中你真的不知道变量的类型是什么。如果 $someBigArray 和 $this->someFunction($var1) 的变量类型不一样,那么分配一个新变量 $var2 会更昂贵。如果它们是相同的类型($someBigArray 和 $this->someFunction($var1)),那么它更便宜。(更少的处理)

关于内存: 使用相同的变量可能会使用更少的内存。 RAM的小优化。

内存很便宜,你应该更加小心你使用的处理能力。在这些情况下,请尝试进行基准测试。

【讨论】:

    【解决方案2】:

    PHP 的垃圾收集有点奇怪,当覆盖一个变量时,它不会(总是?)从内存中刷新。所以内存方面,分配一个新变量并在旧变量上使用unset()。您真的不希望 30Mb 的数组在您的内存中浪费掉,特别是如果这是一个可以运行任意时间长度的脚本,或者您曾经同时运行多个它。

    我不知道处理性能。正如 Nafis 所说,尝试一个基准。 (最简单最笨的办法,写个脚本,运行1000次,看看哪个更快)

    【讨论】:

    • 你能用可验证的数据来支持你的答案吗?
    • 只能通过实验。尝试使用 memory_get_usage() 进行测试;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多