php 加入数组到指定键,php – 最快的方法添加前缀到数组键?

我发现PHPBench不是一个非常好的来源非平凡的基准。所以除非你真的对跑步感兴趣(….);它不会正确显示哪个语法会更快。我把一个简单的基准显示foreach是实际上最快的,当你在迭代中使用键和值。

实际上强制PHP从循环迭代中读取值非常重要,否则它会尽力优化它们。在下面的示例中,我使用doNothing函数强制PHP每次计算键和值。使用doNothing将导致应用于每个循环的开销,但是对于每个循环将是相同的,因为调用的数量将是相同的。

我不是真的那么惊讶,foreach出来了,因为它是迭代字典的语言结构。

$array = range( 0, 1000000 );

function doNothing( $value, $key ) {;}

$t1_start = microtime(true);

foreach( $array as $key => $value ) {

doNothing( $value, $key );

}

$t1_end = microtime(true);

$t2_start = microtime(true);

$array_size = count( $array );

for( $key = 0; $key < $array_size; $key++ ) {

doNothing( $array[$key], $key );

}

$t2_end = microtime(true);

//suggestion from PHPBench as the "fastest" way to iterate an array

$t3_start = microtime(true);

$key = array_keys($array);

$size = sizeOf($key);

for( $i=0; $i < $size; $i++ ) {

doNothing( $key[$i], $array[$key[$i]] );

}

$t3_end = microtime(true);

$t4_start = microtime(true);

array_walk( $array, "doNothing" );

$t4_end = microtime(true);

print

"Test 1 ".($t1_end - $t1_start)."\n". //Test 1 0.342370986938

"Test 2 ".($t2_end - $t2_start)."\n". //Test 2 0.369848966599

"Test 3 ".($t3_end - $t3_start)."\n". //Test 3 0.78616809845

"Test 4 ".($t4_end - $t4_start)."\n"; //Test 4 0.542922019958

编辑:我在64位Mac OSX 10.6上使用PHP 5.3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值