php implode/explode, serialize, json, msgpack 성능 비교
먼저 implode, serialize, json_encode, msgpack_pack을 사용하여 테스트용 텍스트 파일 4개를 만듭니다.
생성 코드는 다음과 같습니다.
<?php $arr = array( 'content1' => '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); echo file_put_contents('implode.txt', implode(',',$arr), true).'<br>'; echo file_put_contents('serialize.txt', serialize($arr), true).'<br>'; echo file_put_contents('json.txt', json_encode($arr), true).'<br>'; echo file_put_contents('msgpack.txt', 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('一','二','三','四','五','六','七','八','九','十');
json_encode는 91바이트입니다
<?php $arr = array( 'content1' => '一二三四五六七八九十', 'content2' => '一二三四五六七八九十', 'content3' => '一二三四五六七八九十' ); $start = microtime(true); $i = 1000000; while($i>0){ // 分别测试运行时间及内存使用情况 $tmp = implode(',',$arr); // $tmp = serialize($arr); // $tmp = json_encode($arr); // $tmp = msgpack_pack($arr); $i--; } $end = microtime(true); echo 'run time:'.($end-$start).'s<br>'; echo 'memory usage:'.(memory_get_usage()/1024).'KB'; ?>
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
가능하다면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!