2009-05-15 2 views
3

У меня есть внешний интерфейс PHP и бэкэнд C++, и мне нужно иметь возможность отправлять группы имен во внешний интерфейс. Какой сериализованный формат будет наиболее эффективным/быстрым для чтения PHP?Самый быстрый формат формата данных в формате PDF Чтение PHP

Пример данных

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

Что будет самым быстрым для PHP читать?

  • XML
  • JSON
  • YAML
  • Protocol Buffer
  • Comma/Space разделителями наша собственная система
  • Что-нибудь еще? Другие?
+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» возвращает аналогично отформатированную строку, которую вы должны использовать eval() –

+0

. Eval() может использоваться и выполняет эту работу, но почему это целесообразно использовать ее по вышеприведенной методике (не быть спорный :)? Я использовал вышеупомянутый метод обработки огромного количества очень больших текстовых файлов. – karim79

0

Как указал Паоло, вы можете использовать json_decode, который очень быстр. На внутреннем интерфейсе C++ это лишь некоторые из ваших вариантов (взятых непосредственно из json.org сайта):

C++:

Смежные вопросы