>  기사  >  백엔드 개발  >  php implode/explode, serialize, json 및 msgpack 간의 성능에 대한 설명

php implode/explode, serialize, json 및 msgpack 간의 성능에 대한 설명

jacklove
jacklove원래의
2018-06-09 11:07:461966검색

php implode/explode, serialize, json, msgpack 성능 비교

먼저 implode, serialize, json_encode, msgpack_pack을 사용하여 테스트용 텍스트 파일 4개를 만듭니다.

생성 코드는 다음과 같습니다.

<?php
$arr = array(
    &#39;content1&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content2&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content3&#39; => &#39;一二三四五六七八九十&#39;
);
echo file_put_contents(&#39;implode.txt&#39;, implode(&#39;,&#39;,$arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;serialize.txt&#39;, serialize($arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;json.txt&#39;, json_encode($arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;msgpack.txt&#39;, msgpack_pack($arr), true);
?>


생성 후

implode.txt가 92바이트
serialize.txt 165바이트
json.txt 223바이트
msgpack.txt 121바이트 생성됩니다.

생성된 문자열 크기는 다음과 같이 정렬됩니다. implode < msgpack_pack < serialize < json_encode

배열이 단순하면 json_encode가 serialize보다 작을 수 있습니다

$arr = array(&#39;一&#39;,&#39;二&#39;,&#39;三&#39;,&#39;四&#39;,&#39;五&#39;,&#39;六&#39;,&#39;七&#39;,&#39;八&#39;,&#39;九&#39;,&#39;十&#39;);

serialize는 147바이트입니다

json_encode는 91바이트입니다

implode, serialize, json_encode, msgpack_pack 성능 비교
<?php
$arr = array(
    &#39;content1&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content2&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content3&#39; => &#39;一二三四五六七八九十&#39;
);
$start = microtime(true);
$i = 1000000;
while($i>0){
    // 分别测试运行时间及内存使用情况
    $tmp = implode(&#39;,&#39;,$arr);
    // $tmp = serialize($arr);
    // $tmp = json_encode($arr);
    // $tmp = msgpack_pack($arr);
    $i--;
}
$end = microtime(true);
echo &#39;run time:&#39;.($end-$start).&#39;s<br>&#39;;
echo &#39;memory usage:&#39;.(memory_get_usage()/1024).&#39;KB&#39;;
?>
implode       1.3225722312927s    628.50KB
serialize     2.0553789138794s    628.32KB
json_encode   2.5058920383453s    628.34KB
msgpack_pack  1.6431028842926s    628.24KB

결과: 메모리 사용량이 비슷하고 실행 시간이 implode < msgpack_pack

요약하자면, implode/explode는 복잡한 구조를 사용하는 데 적합하지 않기 때문에 일반적으로 사용되는 세 가지는 serialize, json 및 msgpack입니다. 그리고 세 가지 비교 중 최적의 실행 속도, 메모리 사용량, 공간 사용량은 msgpack, 직렬화, 마지막으로 json입니다.

가능하다면 msgpack을 사용하여 데이터를 직렬화하는 것이 좋습니다. msgpack에 대해서는 제가 이전에 쓴 기사인 "MessagePack Serialization Format"을 확인하실 수 있습니다.

이 기사에서는 php implode/explode, serialize, json 및 msgpack 간의 성능을 비교합니다. PHP 중국어 넷에 주목하세요.

관련 권장 사항:

php str_replace 지정된 시간을 바꾸는 방법에 대한 설명

header, headers_sent, headers_list, header_remove 사용 지침 정보

PDO 쿼리를 통해 mysql은 필드 정수를 반환합니다. 문자열 유형에 대한 변수 솔루션

위 내용은 php implode/explode, serialize, json 및 msgpack 간의 성능에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.