栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

向数组键添加前缀的最快方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

向数组键添加前缀的最快方法?

我发现PHPBench对于非简单的基准测试不是一个很好的来源。因此,除非您真正对运行感兴趣,否则

for(....);
不会正确显示哪种语法会更快。我汇总了一个简单的基准,以表明当您在迭代过程中同时使用键和值时,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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号