因此,出于性能原因,我需要我的应用程序以快速解析的方式存储大数据数据 . 我知道JSON是可读的,但解码起来并不快 . 所以我应该将我的数组转换为纯PHP代码,或者我必须序列化它然后反序列化 . 那么哪个更快?还有更好的解决方案吗?我自己可以做一个基准测试,但考虑其他人的经验总是更好:)
更多信息:通过大数组我的意思是通过调用print_r()返回大约2MB的数据!并将其转换为纯PHP代码我的意思是:假设这是我的数组: {"index1":"value1","index2":"val'ue2"}
这将是假设函数convert_array_to_php()将返回的:
$array = array('index1'=>'value1' ,'index2'=>'val\'ue2');
4 回答
取决于数据和使用模式 .
通常unserialize()比json_decode()更快,这比include()更快 . 但是,如果数据量很大,则瓶颈实际上就是磁盘 . 所以
unserialize(gzdecode(file_get_contents()))
通常是最快的 . 与从磁盘读取速度相比,解码速度的差异可能是可以忽略的 .如果您真的不需要读出 complete 数据集进行打印或计算,那么最快的存储可能是SQLite . 它通常将索引保存在内存中 .
好吧,我做了一个小基准测试,我将大约7MB的纯PHP编码数组放入一个php文件,并将它的json版本放在另一个文件中,也是一个序列化版本 . 然后对所有这三个进行了基准测试,结果如下:正如预期的那样,json格式解码速度最慢,它花费的时间比解析纯PHP代码长3倍 . 有趣的是,unserialize()是最快的,执行速度比原生php代码快4倍 .
纯PHP代码可能必须是最快的 . 但是,它不太可能是最好的选择,因为它可能更难维护 . 这取决于数据的性质 .
难道没有更好的选择,但仅依靠PHP来实现这一目标吗?
我猜测处理这个大小的几个数组会很难打到你的服务器 .
您是否有可能利用带有一些临时表的数据库来执行您需要对数组中的数据执行的操作?