解析哪个更快?序列化字符串或普通PHP或其他?

时间:2010-10-06 15:47:04

标签: php performance serialization

因此,出于性能原因,我需要我的应用程序以快速解析的方式存储大数据数据。 我知道JSON是可读的,但解码起来并不快。所以我应该将我的数组转换为纯PHP代码,或者我必须序列化它然后反序列化。那么哪个更快?还有更好的解决方案吗? 我自己可以做一个基准测试,但考虑其他人的经验总是更好:)

更多信息:通过大数组我的意思是通过调用print_r()返回大约2MB的数据! 并将其转换为纯PHP代码我的意思是: 假设这是我的数组:{"index1":"value1","index2":"val'ue2"} 这将是假设函数convert_array_to_php()将返回的内容:

$array = array('index1'=>'value1' ,'index2'=>'val\'ue2');

4 个答案:

答案 0 :(得分:3)

取决于数据和使用模式。

一般来说,unserialize()比json_decode()更快,它比include()更快。但是,对于大量数据,瓶颈实际上是磁盘。所以unserialize(gzdecode(file_get_contents()))通常是最快的。与从磁盘读取速度相比,解码速度的差异可能是可以忽略的。

如果您真的不需要读取完整数据集进行打印或计算,那么最快的存储可能是SQLite。它经常将索引保存在内存中。

答案 1 :(得分:2)

好吧,我做了一点基准测试,我将大约7MB的纯PHP编码数组放入一个php文件中,并将它的json版本放在另一个文件中,也是一个序列化版本。 然后对所有这三个进行了基准测试,结果如下: 正如预期的那样,json格式解码速度最慢,它比解析纯PHP代码花了大约3倍。 有趣的是,unserialize()是最快的,执行速度比原生php代码快4倍。

答案 2 :(得分:1)

纯PHP代码可能必须是最快的。但是,它不太可能是最好的选择,因为它可能更难维护。这取决于数据的性质。

答案 3 :(得分:0)

是否有更好的选择,但仅依靠PHP来实现这一目标?

我猜测处理这么大的几个阵列会很难打到你的服务器 您是否可以利用带有一些临时表的数据库来执行数组中数据所需的操作?