由于需要把一个数组存进数据库,所以考虑使用转化成字符串方法,方法基本上有两种既serialize和json_encode。
两种方法各有利弊,于是乎就对这俩讨方法做了下测试。
serialize、unserialize与json_encode、json_decode比较
s是指序列化,即serialize、unserialize
j是json
源代码:
<?php array("I'm a gooPHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。PHP 极其适合网站开发,其代码可以直接嵌入 HTML 代码.", "I'm a good boy.", "a" => "PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。PHP 极其适合网站开发,其代码可以直接嵌入 HTML 代码", 2 =>"PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。PHP 极其适合网站开发,其代码可以直接嵌入 HTML 代码", 'PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。PHP 极其适合网站开发,其代码可以直接嵌入 HTML 代码', "I'm a good boy.", "I'm a good boy.", "I'm a good boy.", "I'm a good boy.", "I'm a good", "asdfnsadofhasd"); ?>
1、压缩与反压缩为一圈
s:1圈用时=>4.4822692871094E-5
j:1圈用时=>9.8943710327148E-5
s-j差值:-5.4121017456055E-5
s:10圈用时=>9.608268737793E-5
j:10圈用时=>0.00071501731872559
s-j差值:-0.00061893463134766
s:100圈用时=>0.00088191032409668
j:100圈用时=>0.0079631805419922
s-j差值:-0.0070812702178955
s:1000圈用时=>0.0086770057678223
j:1000圈用时=>0.071093082427979
s-j差值:-0.062416076660156
s:10000圈用时=>0.089351177215576
j:10000圈用时=>0.71031618118286
s-j差值:-0.62096500396729
s:100000圈用时=>0.89754796028137
j:100000圈用时=>7.0866401195526
s-j差值:-6.1890921592712
s:1000000圈用时=>8.7691621780396
j:1000000圈用时=>70.856695890427
s-j差值:-62.087533712387
s:10000000圈用时=>87.145391941071
2、仅反串行化或json_decode
s:1圈用时=>2.598762512207E-5
j:1圈用时=>8.2015991210938E-5
s-j差值:-5.6028366088867E-5
s:10圈用时=>4.4107437133789E-5
j:10圈用时=>0.00051689147949219
s-j差值:-0.0004727840423584
s:100圈用时=>0.00037717819213867
j:100圈用时=>0.0050899982452393
s-j差值:-0.0047128200531006
s:1000圈用时=>0.0039620399475098
j:1000圈用时=>0.052362203598022
s-j差值:-0.048400163650513
s:10000圈用时=>0.038861989974976
j:10000圈用时=>0.51281499862671
s-j差值:-0.47395300865173
s:100000圈用时=>0.38436698913574
j:100000圈用时=>5.1456820964813
s-j差值:-4.7613151073456
s:1000000圈用时=>3.8943638801575
j:1000000圈用时=>52.551742076874
s-j差值:-48.657378196716
从上面的测试可以看出序列化比JSON效率更高,先压缩后解压时s比j快9倍左右,如果只有解压缩,s比j快15倍