2009-05-15 2 views
3

PHP 프론트 엔드와 C++ 백엔드가 있으며 프론트 엔드에 이름 그룹을 보낼 수 있어야합니다. 어떤 직렬화 된 형식이 PHP가 읽는 데 가장 효율적/가장 빠를 것입니까?가장 빠른 직렬화 데이터 형식 양식 PHP 읽기

예 데이터

group1: 
    name1 3923 
    name2 9879 
    name3 8944 
group2: 
    name5 9823 
group3: 
    name9 9822 
    name1 4894 

PHP 읽고 무엇 가장 빠른 될 것이라고?

  • XML
  • JSON
  • YAML
  • 프로토콜 버퍼는
  • 쉼표/​​우주는 우리 자신의 시스템을 다른
  • 무엇이든 구분? 다른?
+2

몇 킬로 비트의 데이터를 선택하면 거의 모든 형식이 1 밀리 초 이내에 구문 분석 될 가능성이 높습니다. 이것이 주요 병목 현상이 될 가능성은별로 없습니다. –

답변

6

PHP 자체 직렬화 된 형식이 가장 빠를 것입니다. unserialize()은이 데이터를 다시 자체 유형으로 변환하는 데 PHP가 사용하는 함수입니다. This post에는 PHP의 직렬화 된 형식의 다른 언어 구현에 대한 다양한 링크가 있습니다. 그 중 하나를 쉽게 변환 할 수있을 것입니다.

+0

감사합니다, 이것은 가장 쉬운 것 같다, PHP는 자신의 직렬화를 알지 못했다이 간단했다. –

1

JSON은 json_decode을 사용하면 꽤 쉽습니다. 속도에 대해서는 확신 할 수 없지만 시스템간에이 데이터의 메가 바이트를 전송할 계획이 아니라면 어떤 데이터를 전송할지 상관하지 않아야합니다.

2

필자는 대형 텍스트 파일에서 PHP의 serialize() 및 unserialize()를 사용했으며 비참하게 수행했습니다 (몇 년 전이었습니다 - 지금은 더 좋을 수도 있습니다). 어쨌든, 나는이 문제를 극복하기 위해 약간의 트릭을 고안, 단순히 텍스트 파일로 바로 내보낼 데이터, 예로부터 PHP 배열 선언을 생성 포함 :

<?php 
$groups = array('groups' => array(array('jeff' => 2343, 
             'tom' => 8477), 
            array('baal' => 2873, 
             'scorpio' =>), 
            array('jeff' => 2343, 
             'tom' => 8477) 
           ) 
          ) 
       ); 
?> 

... 그리고 간단하여 일렬 화를 푸는 전화 :

include 'groups.php';//makes $groups available 

그 당시에는 잘 돌아갔습니다.

+0

이것은 eval()을 사용하는 것이 바람직한 몇 가지 상황 중 하나이기도합니다. SOLR의 "php"return 유형은 eval()과 비슷한 형식의 문자열을 반환합니다. –

+0

eval()을 사용할 수 있으며 작업을 수행하지만 위의 기술 (위의 기술을 사용하지 않는 것이 좋습니다) 논증 적 :)? 큰 텍스트 파일을 처리 할 때 위의 방법을 사용했습니다. – karim79

관련 문제