我有大量用于神经网络的PHP对象,必须对其进行迭代并对其进行一些数学运算。我想知道在类实例上使用关联数组是否会更好?
我正在处理3640对象周围的事物,并且500最重要的是要在周围的时间(最多)进行迭代,因此任何微优化都会有很大帮助。难道会$object['value']比做起来更快$object->value吗? 问题来源于stack overflow
我将此代码用于“概要分析”(1000个实例,1000.000次读/写):
function p($i) { echo '
'; print_r($i); echo ''; }
$t0 = microtime(true); for ($i=0; $i<1000; $i++) { $z = array(); for ($j=0; $j<1000; $j++) { $z['aaa'] = 'aaa'; $z['bbb'] = 'bbb'; $z['ccc'] = $z['aaa'].$z['bbb']; } } echo '
arrays: '.(microtime(true) - $t0); p($z);
$t0 = microtime(true); for ($i=0; $i<1000; $i++) { $z = (object) null; for ($j=0; $j<1000; $j++) { $z->aaa = 'aaa'; $z->bbb = 'bbb'; $z->ccc = $z->aaa.$z->bbb; } } echo '
obj: '.(microtime(true) - $t0); p($z);
echo '
phpversion '.phpversion(); 它在托管这些东西的LINUX中输出:
arrays: 1.1085488796234
Array ( [aaa] => aaa [bbb] => bbb [ccc] => aaabbb ) obj: 1.2824709415436
stdClass Object ( [aaa] => aaa [bbb] => bbb [ccc] => aaabbb ) phpversion 5.2.17 因此可以得出一个结论:即使在PHP 5.2上,对象也较慢。除非确实需要它们的oop功能,否则不要使用它们。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。