kei*_*ant 1 php arrays performance object
据我所知,PHP stdClass
代码通常比数组更快,当代码深度嵌套足以让它真正重要时.如果我要进行类型转换以便动态定义stdClass
对象,那么效率如何受到影响:
$var = (object)array('one' => 1, 'two' => 2);
Run Code Online (Sandbox Code Playgroud)
如果执行此操作的代码将被执行多次,那么我最好明确定义$var
为对象:
$var = new stdClass();
$var->one = 1;
$var->two = 2;
Run Code Online (Sandbox Code Playgroud)
差异可以忽略不计,因为我$var
将从那里作为对象访问,无论哪种方式?
编辑:
stdClass是我需要的数据类型.我不关心我是否应该使用数组或是否应该使用stdClass对象; 我更关心的是使用(object)array(....)
实例化a 的简写stdClass
是否有效.是的,这是代码,可能会被执行数千次.
你理解错了.对象并不比数组"快得多".事实上,相反的情况通常是正确的,因为数组没有继承问题(和可见性查找).当然,可能会有特定情况下您可以显示明显的显着增益/损失,但在通用情况下,数组往往会更快......
使用语义正确的工具.不要因为您认为对象更快而避免使用数组.在有意义的时候使用构造.有时用对象替换数组是有意义的(例如,当你想严格强制执行数组中的类型时).但这不是其中之一.即使在那,你也不会用STDClass替换array(),你可以用自定义类(可能扩展ArrayObject
或至少实现Iterator
和ArrayAccess
接口)替换它.出于某种原因存在不同的数据结构.如果最好使用对象而不是数组,那么我们不是都会使用对象吗?
不要担心微观优化,比如"投快".它几乎总是不会.写可读,正确的代码.然后优化,如果你有问题......
归档时间: |
|
查看次数: |
2447 次 |
最近记录: |