PHP에서 json_encode、json_decode와serialize,unserialize의 성능 테스트 분석

그래서 PHP의 대상이 어떻게 서열화되어 저장성 가격이 가장 높을까요?이어서 동료가 추천한 JSON 인코딩과 디코딩 함수가 생각났다.그에 따르면 json_encode 및 json_decode는 내장된 serialize와 unserialize 함수보다 효율적입니다.그래서 나는 실험을 해서 동료가 말한 상황이 사실인지 확인하기로 결정했다.실험은 각각 PHP 5.2.13과 PHP 5.3.2 환경에서 진행되었다.같은 변수로 각각 상기 방식으로 인코딩 또는 디코딩 10000회를 하고 함수당 10000회를 실행하는 데 필요한 시간을 얻는다.다음은 PHP 5.2.13 환경 테스트 결과입니다
 
json : 190
serialize : 257
json_encode : 0.08364200592041
json_decode : 0.18004894256592
serialize : 0.063642024993896
unserialize : 0.086990833282471
DONE.
다음은 PHP 5.3.2 환경 테스트 결과입니다
 
json : 190
serialize : 257
json_encode : 0.062805891036987
json_decode : 0.14239192008972
serialize : 0.048481941223145
unserialize : 0.05927300453186
DONE.
이번 실험에서 얻은 결론은 json_encode 및 json_decode의 효율은 serialize와 unserialize의 효율보다 높지 않다. 반서열화할 때 성능의 차이가 두 배 정도 나고 PHP5.3의 집행 효율은 PHP5.2보다 약간 향상된다.다음은 제가 테스트하는 코드입니다
 
<?php
$target = array (
'name' => ' ',
'quality' => 'Blue',
'ti_id' => 21302,
'is_bind' => 1,
'demand_conditions' =>
array (
'HeroLevel' => 1,
),
'quality_attr_sign' =>
array (
'HeroStrength' => 8,
'HeroAgility' => 8,
'HeroIntelligence' => 8,
),
);
$json = json_encode($target);
$seri = serialize($target);
echo "json :\t\t" . strlen($json) . "\r
";
echo "serialize :\t" . strlen($seri) . "\r
\r
";
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++)
{
json_encode($target);
}
$etime = microtime(true);
echo "json_encode :\t" . ($etime - $stime) . "\r
";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++)
{
json_decode($json);
}
$etime = microtime(true);
echo "json_decode :\t" . ($etime - $stime) . "\r
\r
";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++)
{
serialize($target);
}
$etime = microtime(true);
echo "serialize :\t" . ($etime - $stime) . "\r
";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i < 10000; $i ++)
{
unserialize($seri);
}
$etime = microtime(true);
echo "unserialize :\t" . ($etime - $stime) . "\r
\r
";
echo 'DONE.';
?>

좋은 웹페이지 즐겨찾기