使用数组 VS 对象存储数据
2022-08-30 16:57:38
与使用另一种结构相比,使用两种结构中的一种有什么好处?
// array
$user['name'] = 'Emanuil';
// object
$user->name = 'Emanuil';
与使用另一种结构相比,使用两种结构中的一种有什么好处?
// array
$user['name'] = 'Emanuil';
// object
$user->name = 'Emanuil';
阵 列
array_*
对象
__get
__set
只需运行一个简单的测试:
$ts_o = microtime(true);
for($i=0;$i<=1000;$i++)
{
new stdClass();
}
$total_object = microtime(true) - $ts_o;
对:
$ts_a = microtime(true);
for($i=0;$i<=1000;$i++)
{
array();
}
$total_array = microtime(true) - $ts_a;
并计算他的结果。
echo 'Object: ' . $total_object . ' / Array: ' . $total_array;
结果: 对象: 0.002635 / 数组: 0.001243
如您所见,数组在速度方面更快,实际上平均为46.6%。
但是当你开始添加变量时,它们会突然转过来:
$ts_o = microtime(true);
for($i=0;$i<=1000;$i++)
{
$var = new stdClass();
$var->booleon = true;
}
$total_object = microtime(true) - $ts_o;
unset($var);
$ts_a = microtime(true);
for($i=0;$i<=1000;$i++)
{
$var = array();
$var['booleon'] = true;
}
$total_array = microtime(true) - $ts_a;
echo 'Object: ' . ($total_object) . ' / Array: ' . $total_array;
新结果: 0.0037809 / 数组: 0.0046189
您必须进行一些测试,然后在测试结束时找到您的平均值/模式,以找到真正更好的实体。
你可以通过执行具有相同原理的 http://php.net/manual/en/function.memory-get-usage.php 对内存进行测试。memory_get_usage