织梦dedecms模板代理加盟

2020全新代理计划 赚钱+省钱双管齐下,独立平台,丰厚利润!

您现在的位置: 首页>seo > 站长大学 > 基础技术 > php

php array存数据库用json_encode还是serialize

来源: 发布时间:2020-12-24 10:12:07热度:27℃我要评论(0

免费下载,无需注册无需充值

 总结: serialize比json快一点,但是代码量也大,而json简单,若你json数据大的话,建议用serialize,小数据存储读取用json即可。看个人所好。


正好遇到这个项目帮你测试了一下,测试过程如下:

三种形式事先存放各自序列化好的相同的数据10万个文本准备读取:

explode    大小:661Mb 占用空间:779Mb

serialize  大小:787Mb 占用空间:1.01Gb

json       大小:882Mb 占用空间:1.09Gb


第一轮测试:

explode:  82.351449966431 秒

serialize:65.974032878876 秒

json     :82.163902997971 秒


第二轮测试:

explode:  101.51485490799 秒 内存使用:11200Kb

serialize:55.088683843613 秒 内存使用:11188Kb

json     :52.850549936295 秒


第三轮测试:

explode:  36.264735937119 秒 内存使用:11200Kb

serialize:36.270735025406 秒 内存使用:11196Kb

json     :75.997661828995 秒 内存使用:11252Kb


第四轮测试:

explode:  98.666929006577 秒 cpu:9%  内存使用:11196Kb

serialize:61.406966924667 秒 cpu:13% 内存使用:11192Kb

json     :73.898298025131 秒 cpu:16%  内存使用:11248Kb



天天在用,还真的没想过这问题,写了个脚本粗浅测试


<?php


function prt($str) {

echo $str . '<br />';

}


function get_time() {

return time() + microtime();

}


$ex = '#PAGE#';

$times = 1000;


$body = array(

'content1' => '公司概况公司概况公司概况公司概况公司概况公司概况公司概况公司概况公司概况公司概况',

'content2' => '公司历史公司历史公司历史公司历史公司历史公司历史公司历史公司历史公司历史公司历史',

'content3' => '公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情公司行情',

);


$data = array(

array('name' => 'explode', 'encode' => function($arr){ return implode($ex, $arr); }, 'decode' => function($str){ return explode($ex, $str); }),

array('name' => 'json', 'encode' => function($arr){ return json_encode($arr); }, 'decode' => function($str){ return json_decode($str, true); }),

array('name' => 'serialize', 'encode' => function($arr){ return serialize($arr); }, 'decode' => function($str){ return unserialize($str); }),

);


prt('字符串长度:');

foreach ($data as &$row) {

$row['content'] = $row['encode']($body);

$row['length'] = strlen($row['content']);

prt($row['name'] . ':' . $row['length']);

}

unset($row);


prt('');

prt('编码' . $times .'次的时间:');

$start = get_time();

$a = array();

foreach ($data as &$row) {

for($i=0; $i<$times; $i++){

$a = $row['encode']($body);

}

$end = get_time();

prt($row['name'] . ':' . ($end - $start));

$start = $end;

}


prt('');

prt('解码' . $times .'次的时间:');

$start = get_time();

$a = '';

foreach ($data as &$row) {

for($i=0; $i<$times; $i++){

$a = $row['decode']($row['content']);

}

$end = get_time();

prt($row['name'] . ':' . ($end - $start));

$start = $end;

}

 

字符串长度:

explode:360

json:763

serialize:438


编码1000次的时间:

explode:1.0800619125366

json:0.017001152038574

serialize:0.015001058578491


解码1000次的时间:

explode:2.461140871048

json:0.025001049041748

serialize:0.01400089263916


serialize胜出

责任编辑:迈站网

相关阅读

0大家对 php array存数据库用json_encode还是serialize 的评论