【发布时间】:2014-07-24 17:14:22
【问题描述】:
假设我有一个数组$arr,我想将其内容写入文件$handle。在 PHP(5) 中最快/最有效的方法是什么?
一些不同的选择:
使用 implode 将数组转换为字符串:
$string = implode($arr);
fwrite($handle, $string);
将其逐个字符写入文件(对我来说似乎会更慢):
foreach($arr as $char) {
fwrite($handle, $char);
}
使用. 运算符连接,然后写入:
$string = '';
foreach($arr as $char) {
$string .= $char;
}
fwrite($handle, $string);
第三个对我来说似乎是最慢的,因为我猜测 fwrite 和 implode 是用 C 编写的......但是这些天再次使用 JIT 编译可能它正在优化连接而没有函数调用开销。
其中哪一种——或其他方式——最快,为什么?
【问题讨论】:
-
fwrite($handle, implode($arr));- 首先分配给字符串没有开销 -
@JayBlanchard 感谢您的链接。虽然这将是解决此问题的另一种方法,但我认为它不符合重复的条件。我也在问,因为我希望听到一些关于为什么某种方式更快的推理,而不是仅仅根据原始速度数据进行评估。
-
我真的很想知道这点表演对你来说是否至关重要。
-
由于可能存在系统差异、版本差异等,为什么某些事情更快的原因是推测和基于意见的。@AmadeusDrZaius 您是否对这些进行了性能测试?如果是这样,您可能会就速度得出自己的结论(作为概括)。
标签: php fwrite string-concatenation