什么';在PHP中,将字符数组写入文件的最快方法是什么?

什么';在PHP中,将字符数组写入文件的最快方法是什么?,php,fwrite,string-concatenation,Php,Fwrite,String Concatenation,假设我有一个数组$arr,我想将其内容写入一个文件$handle。在PHP(5)中,最快/最有效的方法是什么 一些不同的选择: 使用内爆将数组转换为字符串: $string = implode($arr); fwrite($handle, $string); 将其逐字符写入文件(对我来说似乎速度较慢): 使用运算符连接,然后写入: $string = ''; foreach($arr as $char) { $string .= $char; } fwrite($handle, $st

假设我有一个数组
$arr
,我想将其内容写入一个文件
$handle
。在PHP(5)中,最快/最有效的方法是什么

一些不同的选择:

使用内爆将数组转换为字符串:

$string = implode($arr);
fwrite($handle, $string);
将其逐字符写入文件(对我来说似乎速度较慢):

使用
运算符连接,然后写入:

$string = '';
foreach($arr as $char) {
    $string .= $char;
}
fwrite($handle, $string);
第三个对我来说似乎是最慢的,因为我猜fwrite和inflade是用C写的。。。但是,现在使用JIT编译可能是在优化连接,而没有函数调用开销


以下哪一种(或其他方式)是最快的,为什么?

不确定最快/最有效;但这会在一个函数中打开文件、将内爆数据写入文件并关闭文件:

file_put_contents('/path/to/file.txt', $arr);

不确定最快/最高效;但这会在一个函数中打开文件、将内爆数据写入文件并关闭文件:

file_put_contents('/path/to/file.txt', $arr);

不确定最快/最高效;但这会在一个函数中打开文件、将内爆数据写入文件并关闭文件:

file_put_contents('/path/to/file.txt', $arr);

不确定最快/最高效;但这会在一个函数中打开文件、将内爆数据写入文件并关闭文件:

file_put_contents('/path/to/file.txt', $arr);


fwrite($handle,infrade($arr))可能重复-没有分配给字符串的开销first@JayBlanchard谢谢你的链接。虽然这是解决这个问题的另一种方法,但我认为它不符合复制品的条件。我之所以这么问,也是因为我希望听到一些关于为什么某种方式更快的推理,而不是仅仅根据原始速度数据进行评估。我真的想知道这一点性能是否对您至关重要。关于为什么某些事情更快的推理是推测性的,并且基于观点,因为可能存在系统差异,版本差异等@AmadeusDrZaius您对这些进行过性能测试吗?如果是这样的话,你可能会对速度得出自己的结论(作为一个概括)-没有分配给字符串的开销first@JayBlanchard谢谢你的链接。虽然这是解决这个问题的另一种方法,但我认为它不符合复制品的条件。我之所以这么问,也是因为我希望听到一些关于为什么某种方式更快的推理,而不是仅仅根据原始速度数据进行评估。我真的想知道这一点性能是否对您至关重要。关于为什么某些事情更快的推理是推测性的,并且基于观点,因为可能存在系统差异,版本差异等@AmadeusDrZaius您对这些进行过性能测试吗?如果是这样的话,你可能会对速度得出自己的结论(作为一个概括)-没有分配给字符串的开销first@JayBlanchard谢谢你的链接。虽然这是解决这个问题的另一种方法,但我认为它不符合复制品的条件。我之所以这么问,也是因为我希望听到一些关于为什么某种方式更快的推理,而不是仅仅根据原始速度数据进行评估。我真的想知道这一点性能是否对您至关重要。关于为什么某些事情更快的推理是推测性的,并且基于观点,因为可能存在系统差异,版本差异等@AmadeusDrZaius您对这些进行过性能测试吗?如果是这样的话,你可能会对速度得出自己的结论(作为一个概括)-没有分配给字符串的开销first@JayBlanchard谢谢你的链接。虽然这是解决这个问题的另一种方法,但我认为它不符合复制品的条件。我之所以这么问,也是因为我希望听到一些关于为什么某种方式更快的推理,而不是仅仅根据原始速度数据进行评估。我真的想知道这一点性能是否对您至关重要。关于为什么某些事情更快的推理是推测性的,并且基于观点,因为可能存在系统差异,版本差异等@AmadeusDrZaius您对这些进行过性能测试吗?如果是这样的话,您可能会对速度得出自己的结论(作为一个概括)。我认为这有一个错误,但后来我在php.net上读到了:“您还可以将数据参数指定为一个一维数组。这相当于file_put_contents($filename,infrade(“”,$array))。”它在手动输入中指出,这可能会导致并发问题。这是否意味着,只要我在同一程序执行中写入后不尝试读取文件,我就可以了?我认为在这种情况下,使用
LOCK\u EX
作为第三个参数可以解决问题。我明白了,谢谢。对于阅读本文的其他人来说,我不清楚LOCK_EX是否也阻止读取,但提供了完整的文件锁定功能。我认为这有一个错误,但后来我在php.net上读到:“您还可以将数据参数指定为一维数组。这相当于file_put_内容($filename,infrade('',$array))。”它在手动输入中指出,这可能会导致并发问题。这是否意味着,只要我在同一程序执行中写入后不尝试读取文件,我就可以了?我认为在这种情况下,使用
LOCK\u EX
作为第三个参数可以解决问题。我明白了,谢谢。对于阅读本文的其他人来说,我不清楚LOCK_EX是否也阻止读取,但提供了完整的文件锁定功能。我认为这有一个错误,但后来我在php.net上读到:“您还可以将数据参数指定为一维数组。这相当于file_put_内容($filename,infrade('',$array))。”它在手动输入中指出,这可能会导致并发问题。这是否意味着只要我不在同一程序执行中写入后尝试读取文件,我就会