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