>  기사  >  백엔드 개발  >  PHP에서 json_encode, json_decode, 직렬화 및 역직렬화의 성능 테스트에 대한 간략한 분석

PHP에서 json_encode, json_decode, 직렬화 및 역직렬화의 성능 테스트에 대한 간략한 분석

coldplay.xixi
coldplay.xixi앞으로
2020-07-18 17:06:493494검색

PHP에서 json_encode, json_decode, 직렬화 및 역직렬화의 성능 테스트에 대한 간략한 분석

오늘 우연히 생각한건데, PHP를 사용하여 BDB와 유사한 작은 파일 기반의 Key-Value 데이터베이스를 작성하여 비정형 레코드형 데이터를 저장한다면 얼마나 효율적일지 궁금합니다.

그래서 가장 비용 효율적인 방법으로 PHP에서 객체를 직렬화하고 저장하는 방법에 대해 생각해 보았습니다. 그러다가 이전 동료들이 추천한 JSON 인코딩 및 디코딩 기능이 생각났습니다.
그에 따르면 json_encodejson_decode는 내장된 serializeunserialize 기능보다 더 효율적입니다. json_encodejson_decode比内置的serializeunserialize函数要高效。
于是我决定动手实验,证实一下同事所说的情况是否属实。
实验分别在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_encodejson_decode的效率并没有比serializeunserialize그래서 나는 동료의 말이 사실인지 확인하기 위해 실험을 하기로 했습니다.

실험은 각각 PHP 5.2.13과 PHP 5.3.2 환경에서 진행되었습니다.

동일한 변수를 이용하여 위의 방법으로 10,000번 인코딩 또는 디코딩을 하고, 각 기능을 10,000번 실행하는데 필요한 시간을 구합니다.

다음은 PHP 5.2.13 환경에서의 테스트 결과 중 하나입니다.

코드는 다음과 같습니다.

<?php 
$target = array ( 
&#39;name&#39; => &#39;全能头盔&#39;, 
&#39;quality&#39; => &#39;Blue&#39;, 
&#39;ti_id&#39; => 21302, 
&#39;is_bind&#39; => 1, 
&#39;demand_conditions&#39; => 
array ( 
&#39;HeroLevel&#39; => 1, 
), 
&#39;quality_attr_sign&#39; => 
array ( 
&#39;HeroStrength&#39; => 8, 
&#39;HeroAgility&#39; => 8, 
&#39;HeroIntelligence&#39; => 8, 
), 
); 
$json = json_encode($target); 
$seri = serialize($target); 
echo "json :\t\t" . strlen($json) . "\r\n"; 
echo "serialize :\t" . strlen($seri) . "\r\n\r\n"; 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_encode($target); 
} 
$etime = microtime(true); 
echo "json_encode :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
json_decode($json); 
} 
$etime = microtime(true); 
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
serialize($target); 
} 
$etime = microtime(true); 
echo "serialize :\t" . ($etime - $stime) . "\r\n"; 
//---------------------------------- 
$stime = microtime(true); 
for ($i = 0; $i < 10000; $i ++) 
{ 
unserialize($seri); 
} 
$etime = microtime(true); 
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n"; 
echo &#39;DONE.&#39;; 
?>
다음은 PHP 5.3.2 환경에서의 테스트 결과 중 하나입니다. 환경:

코드는 다음과 같습니다.🎜rrreee🎜이 실험에서 얻은 결론은 다음과 같습니다. 🎜json_encodejson_decode는 더 이상 그렇지 않습니다. serialize unserialize보다 효율적입니다. 역직렬화 중 성능 차이는 PHP 5.3의 약 2배입니다. PHP 5.3의 실행 효율성은 PHP 5.2에 비해 약간 향상되었습니다. 🎜🎜코드는 다음과 같습니다.🎜rrreee🎜🎜관련 학습 권장 사항: 🎜초보부터 마스터까지 PHP 프로그래밍🎜🎜🎜

위 내용은 PHP에서 json_encode, json_decode, 직렬화 및 역직렬화의 성능 테스트에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제