Foreach、Array_Map 与 Lambda 以及 Array_Map 与静态函数的性能比较
本文评估了三种方法之间的性能差异数组:使用 foreach、将 array_map 与 lambda/closure 函数一起使用、将 array_map 与 'static' 一起使用函数/方法。
foreach
$result = array(); foreach ($numbers as $number) { $result[] = $number * 10; } return $result;
使用 lambda 映射
return array_map(function($number) { return $number * 10; }, $numbers);
使用 ' 映射static' 函数,作为字符串传递参考
function tenTimes($number) { return $number * 10; } return array_map('tenTimes', $numbers);
性能基准
使用不同 PHP 版本(5.6、7 和 HHVM)进行的基准显示了以下结果:
PHP Version | Foreach | MapClosure | MapNamed | MapClosureI | ForEachI |
---|---|---|---|---|---|
5.6 | 0.57 | 0.59 | 0.69 | 0.73 | 0.60 |
7 | 0.11 | 0.16 | 0.11 | 0.19 | 0.11 |
HHVM | 0.09 | 0.10 | 0.10 | 0.11 | 0.09 |
一般来说,带有 lambda 函数的 foreach 和 array_map 表现出相似的性能。具有静态函数的 Array_map 稍微慢一些。将闭包与 use 语句一起使用会带来明显的性能损失。
结论
这些方法之间的选择取决于特定的用例和因素,例如代码可读性、可维护性、和性能。对于简单的转换,带有 lambda 函数的 foreach 和 array_map 可提供相当的性能并提供简洁的语法。对于更复杂的转换,具有静态函数的 array_map 可以实现更清晰且可重用的代码结构,尽管存在潜在的性能权衡。
以上是哪种 PHP 数组转换方法最快:foreach、带有 Lambda 的 array_map,还是带有静态函数的 array_map?的详细内容。更多信息请关注PHP中文网其他相关文章!