因此,我对大量整数的答案中提到的一些方法的性能感到好奇。
制备
只需创建一个介于 0 和 100 之间的 100 万个随机整数的数组。比,我把它们内爆了,拿到绳子。
$integers = array();
for ($i = 0; $i < 1000000; $i++) {
$integers[] = rand(0, 100);
}
$long_string = implode(',', $integers);
方法 1
这是马克答案中的一句话:
$integerIDs = array_map('intval', explode(',', $long_string));
方法 2
这是 JSON 方法:
$integerIDs = json_decode('[' . $long_string . ']', true);
方法 3
我想出了这个作为马克答案的修改。这仍然使用函数,但不是调用我使用常规循环来完成工作,以避免可能产生的开销。我也解析了 vs ,但我尝试了两者,并且在性能方面没有太大差异。explode()
array_map()
foreach
array_map()
(int)
intval()
$result_array = array();
$strings_array = explode(',', $long_string);
foreach ($strings_array as $each_number) {
$result_array[] = (int) $each_number;
}
结果
Method 1 Method 2 Method 3
0.4804770947 0.3608930111 0.3387751579
0.4748001099 0.363986969 0.3762528896
0.4625790119 0.3645150661 0.3335959911
0.5065748692 0.3570590019 0.3365750313
0.4803431034 0.4135499001 0.3330330849
0.4510772228 0.4421861172 0.341176033
0.503674984 0.3612480164 0.3561749458
0.5598649979 0.352314949 0.3766179085
0.4573421478 0.3527538776 0.3473439217
0.4863037268 0.3742785454 0.3488383293
底线是平均值。对于100万个整数,第一种方法看起来有点慢,但我没有注意到答案中所述的方法2的性能提高了3倍。事实证明,循环是我的情况下最快的循环。我已经用Xdebug完成了基准测试。foreach
编辑:自从最初发布答案以来已经有一段时间了。为了澄清,基准测试是在php 5.6.40中完成的。