如何测试jasonjava对象序列化成json对象的效率

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&php中json和serialize 性能比较测试-Php高级应用-Php教程-壹聚教程网php中json和serialize 性能比较测试
php中json是实时交换数据的一个常用的数据传输模式了,而serialize是把字符转换成一个序列化字符串了,那么它们两的性能那个会更好一些呢?对此小编整理了一些json和serialize 性能比较测试例子供各位学习参考。
1,操作元素较少,单个元素比较大,英文,3个元素操作1000次
$data = array('hello','word');
$d = &helloword&;
$d = str_repeat($d, 10000);
//for($i = 0;$i $data[] = $d;
//var_dump($data);
$jsonen_sarttime = getmicrotime();
for($i=0;$i $json = json_encode($data);
echo &json长度:&.strlen($json).&
$jsonen_endtime = getmicrotime();
echo &jsonencode耗时:&.($jsonen_endtime - $jsonen_sarttime).&
$jsonde_starttime = getmicrotime();
for($i=0;$i $unjson = json_decode($json,true);
$jsonde_endtime = getmicrotime();
echo &jsondecode耗时:&.($jsonde_endtime - $jsonde_starttime).&
$seri1_starttime = getmicrotime();
for($i=0;$i $serialize = serialize($data);
echo &serialize长度:&.strlen($serialize).&
$seri1_endtime = getmicrotime();
echo &serialize序列化耗时:&.($seri1_endtime - $seri1_starttime).&
$seri2_starttime = getmicrotime();
for($i=0;$i $unserialize = unserialize($serialize);
$seri2_endtime = getmicrotime();
echo &serialize反序列化耗时:&.($seri2_endtime - $seri2_starttime).&
*获取时间记
function getmicrotime(){
list($usec, $sec) = (& &,microtime());
return ((float)$usec + (float)$sec);
json长度:90019
jsonencode耗时:1.4
jsondecode耗时:1.1
serialize长度:90052
serialize序列化耗时:0.673
serialize反序列化耗时:0.068
可以看到json在做英文处理的时候,数组元素较少,体积要小于序列化的数据.处理效率低于序列化.
将data 更改为
$data = array('hello','word');
$d = &你好&;
$d = str_repeat($d, 10000);
//for($i = 0;$i $data[] = $d;
json长度:120019
jsonencode耗时:0.32
jsondecode耗时:2.8
serialize长度:60052
serialize序列化耗时:0.08
serialize反序列化耗时:0.69
可以看到 json在做文字处理的时候,体积较大,处理效率也略低于序列化.
3.将数据更改为
$data = array('hello','word');
$d = &你好&;
for($i = 0;$i $data[] = $d;
json长度:150016
jsonencode耗时:2.2
jsondecode耗时:6.2
serialize长度:198939
serialize序列化耗时:2.3
serialize反序列化耗时:4.5
可以看到json体积略小于serialize
4.将data修改为
$data = array('hello','word');
$d = &hello&;
for($i = 0;$i $data[] = $d;
json长度:80016
jsonencode耗时:1.6
jsondecode耗时:4.8
serialize长度:188939
serialize序列化耗时:2.
serialize反序列化耗时:4.4
以一个包含1000000个元素的数组做为原始数据,分别以json, serialize, igbinary进行序列化和反向操作。
ini_set('memory_limit', '512m');
$array = array_fill(0, 1000000, rand(1, 9999));
$start = microtime(true);
$export = json_encode($array);
$end = microtime(true);
$duration = $end - $
print('JSON Encode: ' . $duration . PHP_EOL);
$start = microtime(true);
$import = json_decode($export);
$end = microtime(true);
$duration = $end - $
print('JSON Decode: ' . $duration . PHP_EOL);
$start = microtime(true);
$export = serialize($array);
$end = microtime(true);
$duration = $end - $
print('Serialize: ' . $duration . PHP_EOL);
$start = microtime(true);
$import = unserialize($export);
$end = microtime(true);
$duration = $end - $
print('Serialize: ' . $duration . PHP_EOL);
$start = microtime(true);
$export = igbinary_serialize($array);
$end = microtime(true);
$duration = $end - $
print('Igbinary Serialize: ' . $duration . PHP_EOL);
$start = microtime(true);
$import = igbinary_unserialize($export);
$end = microtime(true);
$duration = $end - $
print('Igbinary Serialize: ' . $duration . PHP_EOL);
JSON Encode: 0.229
JSON Decode: 0.84
Serialize: 0.32
Serialize: 7.4
Igbinary Serialize: 0.605
Igbinary Serialize: 0.47
从测试结果来看,速度方面优先级排列为 igbinary & json & serialize。同时我们也可以看到,php原生的serialize在对大对象进行反向操作时,速度真是掉队一大截了。
占用字节数对比
json: 5000001
serialize:
igbinary: 7868681
在没有中文字符的情况下,json胜出,igbinary次之,serialize又被甩了几条街
如果只是英文和数字,元素比较平均,则推荐json,体积和效率均优于序列化
如果只是英文和数字,个别元素较大,则推荐serialize效率优于序列化
如果中文,元素较少,推荐序列化,体积和效率均优于json
如果中文,元素比较平均,推荐json
如果是缓存业务,效率越高越好,如果是缓存数据,体积越小越好。也要看具体的场景。
上一页: &&&&&下一页:相关内容所有回答(8)
BinaryFomatter
soapfomatter
园豆:9509
用json.net类库,format一下就出来你这种json了,还支持list的操作。
xml的看看这里
园豆:8135
园豆:8135
soapfomatter
园豆:2026
BinaryFomatter这个不好。因为这个首版本控制,更新了类的版本之后就会导致一些信息没办法再序列化回来。
建议使用json.net 序列化为json.或者xml.见这里
园豆:13407
Newtonsoft.Json
Newtonsoft绝对能满足你的需求。地址。
园豆:28600
protobuf.net 占用空间小,效率高.
看反射和json
我有写一个博文
&&&您需要以后才能回答,未注册用户请先。

我要回帖

更多关于 jquery序列化json对象 的文章

 

随机推荐