据我了解,当代码的嵌套深度足够深时,PHP stdClass对象通常比数组要快.如果我正在进行类型转换以动态定义stdClass对象,那么对效率的影响如何:
$var = (object)array('one' => 1, 'two' => 2);
如果执行此操作的代码将多次执行,那么最好将$var显式定义为对象:
$var = new stdClass();
$var->one = 1;
$var->two = 2;
差异可以忽略不计,因为我将以两种方式从那里访问$var作为对象吗?
编辑:
stdClass是我在这里需要的数据类型.我不在乎是否应该使用数组还是应该使用stdClass对象.我更关心使用实例化stdClass的(object)array(….)速记是否有效.是的,这在代码中可能会执行数千次.
解决方法:
你理解错了.对象并不比数组“快得多”.实际上,相反的情况通常是正确的,因为数组不存在继承(和可见性查找)问题.当然,在某些情况下,您可以显示明显的明显损益,但是在一般情况下,阵列往往会更快.
使用语义上正确的工具.不要回避使用数组,因为您认为对象更快.在合理时使用构造.有时候,用对象替换数组是有意义的(例如,当您想严格执行数组中的类型时).但这不是其中之一.即使那样,您也不会用STDClass替换array(),而是将其替换为一个自定义类(一个可能扩展ArrayObject或至少实现Iterator和ArrayAccess接口的类).存在不同的Data Structures是有原因的.如果最好使用对象而不是数组,我们不是都使用对象吗?
不必担心“投放速度更快”之类的微观优化.是almost always not.编写可读,正确的代码.然后优化,如果您遇到问题…
标签:php,arrays,performance,object
来源: https://codeday.me/bug/20191009/1881138.html