2009-09-21 2 views
3

그건 내가 물어볼 필요가있는 전부입니다. PHP 매뉴얼을 확인하고 serialize가 json_encode (그는 일부 벤치 마크를 실행)보다 45-90 % 느리다는 사용자 게시물을 보았습니다. 그러나 "천천히"어떻게 느린가요? 나는 "대"대용량을 많이 볼 수 있지만 그 중 어떤 것도 초보자와 관련이 없습니다.serialize()를 사용하는 것보다 json_encode()를 사용하는 것이 더 나은 시나리오입니까?

방금 ​​json에서 배열을 인코딩하고 다른 코드를 디코딩하는 스크립트를 작성했습니다. 나는 연재와 똑같이했다. obviuously 그 (것)들 사이 어떤 뜻 깊은 다름을 저에게 말하지 않을 것이다.

+0

복제본은 http://stackoverflow.com/questions/804045/preferred-method-to-store-php-arrays-json-encode-vs-serialize –

답변

1

당신은 하나의 응용 프로그램 및 다른간에 데이터를 전송하는 경우, 보통 거의 항상 더 나은 JSON은 데이터보다는 PHP 같이 데이터를 직렬화 인코딩 를 사용하는 방법의 최신 PHP 특정 및 JSON과 같은 휴대용이 아닌 형식은 .

서버와 클라이언트가 모두 PHP 기반 인 상황에서도 JSON과 같은 이식 가능한 형식을 사용하여 향후 서버에서 응답 형식을 변경하지 않고도 새 클라이언트를 만들 수 있습니다.

필자는이 두 가지 벤치마킹을 수행하지 않았지만 json 인코딩이 직렬화보다 빠르다는 사실을 발견했다면 사용하는 것보다 더 많은 이유가 있습니다.

또한 직렬화 된 데이터보다 읽기 쉬운 JSON 인코딩 데이터가 더 좋으며 시각화를 위해 방화 광구에 신속하게 던져 넣을 수 있습니다.

3

메모리 사용량과 CPU 시간의 차이에 대한 측정 가능한 아이디어를 10,000 번 (각) 제공합니다.

대부분 차이점은 성능면에서 중요하지 않습니다. JSON을 사용하면 웹 브라우저로 돌아가거나 다른 애플리케이션과의 상호 운용성 (특히 웹 서비스 및 기타 수단을 통한), 특히 PHP가 아닌 플랫폼의 경우와 같이 두 가지 상황에서 유용합니다.

+0

입니다. 그래서 json을 PHP에서 인코딩하여 전달할 수 있습니다. jquery 스크립트? – yretuta

+0

@Ygam : $ .getJSON jQuery 함수를 사용하여 서버, PHP 또는 기타에서 JSON 데이터를 수신 할 수 있습니다. –

+0

예, 이것이 json으로 인코딩 할 때의 주요 이점 중 하나입니다. Actionscript는 json 객체도 받아들입니다. –

2

두 개의 오브젝트/배열 만 인코딩/직렬화 할 때 속도의 차이는 중요하지 않을 것이라고 말하고 싶습니다. 실제로는 지각하지 못할 것입니다.

차이점은 serialize가 특히 PHP에서 이루어진다는 점입니다. 예를 들어 클래스는 serialize를 통해 손실되지 않으므로 정보 처리가 가능하며 직렬화를 취소 할 때 검색 할 수 있습니다.

반면에 JSON은 PHP와 관련이 없으므로 좋은 교환 형식이며 자바 스크립트와 PHP간에 데이터를 교환하는 데 주로 사용됩니다. 지금

class A { 
    public $a; 
    public function __construct($a) { 
     $this->a = $a; 
    } 
} 

$test = new A(10); 

의 직렬화하자 때 unserialize $ 테스트 :


는 예를 들어,이 코드 조각을 고려

var_dump(unserialize(serialize($test))); 

우리가 얻을 :

object(A)[2] 
    public 'a' => int 10 

즉, 객체, 클래스 A의 인스턴스이제


, 이제 JSON과 동일한 기능을 수행 할 수 있습니다 :

var_dump(json_decode(json_encode($test))); 

우리는 이제 stdClass의 인스턴스를 가지고 :

object(stdClass)[2] 
    public 'a' => int 10 

JSON 데이터합니다 ('클래스 A'를 교환하는 좋은 nformation은 PHP에서는 중요하지만 다른 응용 프로그램에는별로 도움이되지 않습니다.) 그러나 그것의 한계도있다.

관련 문제