这是我的第一个问题。
我正在对 php 脚本进行一些优化,以提高其执行速度...
之间 :
$datas = array();
$datas['file_import'] = $file_name_reporting;
和 :
unset($datas);
$datas['file_import'] = $file_name_reporting;
谁能告诉我哪个更快?
谢谢
这是我的第一个问题。
我正在对 php 脚本进行一些优化,以提高其执行速度...
之间 :
$datas = array();
$datas['file_import'] = $file_name_reporting;
和 :
unset($datas);
$datas['file_import'] = $file_name_reporting;
谁能告诉我哪个更快?
谢谢
您的第二个示例会导致警告,因为$datas
现在是null
并且您将其视为数组,因此您必须在之前将其声明为空数组。
因此,只需按照您的第一个示例 - 分配一个空数组,然后将一些数据放入其中。
我认为第一种方法只是覆盖,但第二种方法包括删除、检查存在、触发警告和创建新数组
声称任何一种形式都比另一种形式“更快”是荒谬的。这两个版本的执行速度都非常快,以至于您需要在循环中运行它们数百万次才能注意到差异。你真的在你的脚本中这样做吗?如果没有,请忘记这里的“优化”(实际上, “通过眼睛”忘记所有优化是个好主意,正如任何有经验的开发人员都可以告诉你的那样)。
最重要的是,这两个版本实际上做了不同的事情,因为这unset
将从 sumbol 表中删除名称$datas
(并在您尝试将值添加到数组时在下一行给您一个通知)。
只需使用感觉正确的东西,并查看繁重的循环以找到要优化的东西。
在这两种情况下,都会构造一个新的数组。在 php 中取消设置变量,会将其值设置为 null,仅在下一行调用数组构造函数。虽然我同意 knittl,但我的建议是:
$datas = array('file_import' => $file_name_reporting);
通过创建一个新数组,您会自动“取消设置”变量,并通过将值传递给数组构造函数,您可以在数组中填充您想要的任何值。
显然,第一个代码会运行得更快,因为您只执行两个操作:显式创建一个数组并添加一部分数据。第二个示例将导致警告,因为您销毁了一个变量,然后再次尝试使用它。
此外unset
不会释放已使用的内存,它只会释放变量上的指针。运行 gc 时将释放内存。要释放内存,请$datas = null;
改用。
array() 将创建一个数组,而 unset() 将销毁一个变量。