Php 分配数据:数组与括号,哪个更好?
我只是想知道这两者之间的区别,性能方面,哪一个是最好的使用Php 分配数据:数组与括号,哪个更好?,php,arrays,optimization,Php,Arrays,Optimization,我只是想知道这两者之间的区别,性能方面,哪一个是最好的使用 $data = array( 'key1' => 'some value', 'key2' => $some_variable ); 这个呢 $data = array(); // can be omitted $data['key1'] = 'some value'; $data['key2'] = $some_value 回到这个问题,第一种方法会更快,请参阅下面的操作码: 1: 代码: 操作码:
$data = array(
'key1' => 'some value',
'key2' => $some_variable
);
这个呢
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = $some_value
回到这个问题,第一种方法会更快,请参阅下面的操作码: 1: 代码: 操作码: 2: 代码: 操作码:
基于以下代码:
<?php
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(
'key1' => 'some value',
'key2' => 3
);
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for brackets.";
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = 3;
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for keys.";
?>
输出显示每个方法3秒
答:没有明显的性能差异:)
编辑:
我还刚刚复制了代码,并通过CLI在一台非常旧且速度较慢的PC上运行了它(每次循环的次数也增加到100000000次),结果如下:
第一种方法52秒,第二种方法59秒。所以,尽管差别很小,但在一亿次迭代中,几乎可以随心所欲地使用:)这种比较不是思考的方式。当您编写一些实用代码时,您将根据问题的需要在这两种方法之间交替切换。例如,如果要从数据库访问某行,则必须在循环中使用第二行,虽然很少使用
array()
,但在某些情况下,您更愿意使用它,因为在无法从$\u POST
或数据库获取值的情况下,字符串索引数组必须以这种方式分配。但确实存在两种方法都可以使用的情况,但您可能更喜欢循环中的第二种方法,因为您的代码将更短,并且您在为可能是10000个条目赋值时需要承受的痛苦更少。快乐编码!:) 这是一个荒谬的不相关的性能差异量,如果有的话。在这些事情被证明是你的问题之前,不要担心。在这种情况下,使用最有意义的语法。这取决于您的需求……在这里测试性能似乎非常容易。写一个循环,每个循环10000000个,看看每个循环需要多长时间。我把它们放在一个循环(1000000)中,第二个循环更快(半秒)!
line # * op fetch ext return operands
---------------------------------------------------------------------------------
3 0 > INIT_ARRAY ~0 'some+value', 'key1'
5 1 ADD_ARRAY_ELEMENT ~0 !1, 'key2'
2 ASSIGN !0, ~0
6 3 > RETURN 1
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = $some_value
line # * op fetch ext return operands
---------------------------------------------------------------------------------
2 0 > INIT_ARRAY ~0
1 ASSIGN !0, ~0
3 2 ASSIGN_DIM !0, 'key1'
3 OP_DATA 'some+value', $3
4 4 ASSIGN_DIM !0, 'key2'
5 OP_DATA !1, $5
5 6 > RETURN 1
<?php
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(
'key1' => 'some value',
'key2' => 3
);
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for brackets.";
$start=time();
for($i=0;$i<10000000;$i++)
{
$data = array(); // can be omitted
$data['key1'] = 'some value';
$data['key2'] = 3;
}
$end=time();
$total=$end-$start;
echo "The operation took $total seconds to complete for keys.";
?>