Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析哪个更快?序列化字符串或普通PHP或其他东西?_Php_Performance_Serialization - Fatal编程技术网

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

解析哪个更快?序列化字符串或普通PHP或其他东西?,php,performance,serialization,Php,Performance,Serialization,因此,出于性能原因,我需要我的应用程序以一种快速解析的方式存储大量数据。 我知道JSON是可读的,但解码速度不快。因此,我要么将数组转换为纯php代码,要么将其序列化,然后反序列化。那么,哪个更快?有没有更好的解决办法? 我可以自己做一个基准,但最好还是考虑别人的经验: 更多信息:所谓大数组,我指的是通过调用print_r()返回的大约2MB数据! 通过将其转换为纯php代码,我的意思是: 假设这是我的数组:{“index1”:“value1”,“index2”:“val'ue2”} 这就是假设

因此,出于性能原因,我需要我的应用程序以一种快速解析的方式存储大量数据。 我知道JSON是可读的,但解码速度不快。因此,我要么将数组转换为纯php代码,要么将其序列化,然后反序列化。那么,哪个更快?有没有更好的解决办法? 我可以自己做一个基准,但最好还是考虑别人的经验:

更多信息:所谓大数组,我指的是通过调用print_r()返回的大约2MB数据! 通过将其转换为纯php代码,我的意思是: 假设这是我的数组:
{“index1”:“value1”,“index2”:“val'ue2”}
这就是假设函数convert_array_to_php()将返回的结果:

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

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

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

取决于数据和使用模式

通常,unserialize()比json_decode()快,后者比include()快。然而,对于大数据量,瓶颈实际上是磁盘。因此,
unserialize(gzdecode(file\u get\u contents())
通常是最快的。与从磁盘读取相比,解码速度的差异可能可以忽略


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

取决于数据和使用模式

通常,unserialize()比json_decode()快,后者比include()快。然而,对于大数据量,瓶颈实际上是磁盘。因此,
unserialize(gzdecode(file\u get\u contents())
通常是最快的。与从磁盘读取相比,解码速度的差异可能可以忽略


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

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

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

是否有更好的选择,但仅仅依靠php来实现这一点

我猜处理几个这样大小的数组会对您的服务器造成很大的影响。

您是否可以利用带有一些临时表的数据库来处理数组中的数据?

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

我猜处理几个这样大小的数组会对您的服务器造成很大的影响。

您是否可以利用带有一些临时表的数据库来处理数组中的数据?

为什么要将数据数组转换为“纯php代码”?我甚至不确定这是否意味着……任何人的任何经验都会被你自己的IMHO基准所压倒。@Cg LIVE:请定义“大”,这可能很重要,因为这是一个权衡问题。对这类事情进行基准测试非常容易。编写您的序列化函数,比较使用serialize、var_export和json_encode的实现,并为其他人发布您的结果,这样我们就可以利用您的经验而不是自己进行基准测试。为什么要将数据数组转换为“纯php代码”?我甚至不确定这是否意味着……任何人的任何经验都会被你自己的IMHO基准所压倒。@Cg LIVE:请定义“大”,这可能很重要,因为这是一个权衡问题。对这类事情进行基准测试非常容易。编写您的序列化函数,比较使用serialize、var_export和json_encode的实现,并为其他人发布您的结果,这样我们就可以使用您的经验,而不是自己进行基准测试。有趣而奇怪的是,我已经看到将PHP的
parse_ini_file()
放在上面的基准测试包括纯PHP代码。我找不到正确的参考资料now@Pekka:整洁!我想这是可能的,它比解析PHP更简单,尽管PHP预编译可能会影响这一点……有趣而奇怪的是,我看到了将PHP的
parse_ini_file()
放在上面的基准测试,包括纯PHP代码。我找不到正确的参考资料now@Pekka:整洁!我想这是可能的,这是一个比解析PHP更简单的解析,尽管PHP预编译可能会影响这一点……是的,我也担心这一点。但这件事的运作方式并没有给我留下太多的选择。我想结合db和序列化字符串来减轻一点负担。嗨,CG。张贴一些你的数据的例子,我们来看看?是的,我也很担心。但这件事的运作方式并没有给我留下太多的选择。我在考虑db和序列化字符串的组合