据我了解,PHPstdClass
当代码嵌套得足够深以至于它实际上很重要时,对象通常比数组更快。如果我通过类型转换来定义,效率会受到怎样的影响stdClass
飞行中的对象:
$var = (object)array('one' => 1, 'two' => 2);
如果执行此操作的代码将被执行很多次,我最好显式定义$var
作为对象:
$var = new stdClass();
$var->one = 1;
$var->two = 2;
差异可以忽略不计吗,因为我将访问$var
从那时起作为一个对象,无论如何?
Edit:
stdClass 是我在这里需要的数据类型。我不关心是否应该使用数组或者是否应该使用 stdClass 对象;我更关心是否使用(object)array(....)
实例化 a 的简写stdClass
是高效的。是的,这是可能被执行数千次的代码。
你理解错了。对象并不比数组“快得多”。事实上,通常情况恰恰相反,因为数组不存在继承(和可见性查找)问题。当然,在某些特定情况下,您可以显示出明显的显着增益/损失,但在一般情况下,数组往往会更快......
使用语义正确的工具。不要因为认为对象更快而避免使用数组。当有意义时使用结构。有时,用对象替换数组是有意义的(例如,当您想要严格强制执行数组中的类型时)。但这不是其中之一。即便如此,您也不会用 STDClass 替换 array() ,而是用自定义类(可能扩展的类)替换它ArrayObject或者至少实现Iterator and ArrayAccess接口)。不同的数据结构存在是有原因的。如果使用对象而不是数组更好,那么我们不是都使用对象来代替吗?
不必担心诸如“投射速度更快”之类的微观优化。它是几乎总是不。编写可读、正确的代码。如果遇到问题就优化一下...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)