В каком сценарии это лучше использовать json_encode (), чем использовать Serialize ()?

голоса
27

Это все, что мне нужно спросить. Проверил PHP руководство и видел пользователь после говоря, сериализующее это 45-90% медленнее, чем json_encode (он провел несколько тестов). Но как «медленный» медленно? Я могу найти много «против» вещи расползание вокруг, но ни один из которых новичок, как я могу относиться к.

Я просто написал сценарий, закодированный массив в JSON и еще один, чтобы расшифровать его. Я сделал то же самое с сериализации. Obviuously, что не будет говорить мне какие-либо существенные различия между ними.

Задан 21/09/2009 в 02:50
пользователем
На других языках...                            


3 ответов

голоса
3

Делайте это в 10000 раз (каждый раз) до (надеюсь) получить ощутимое представление о различиях в обоих использование памяти и процессорного времени.

В основном разница не будет существенным с точки зрения производительности. Использование JSON полезно в двух конкретных случаях: для возврата к веб-браузер и для взаимодействия с другими приложениями (через веб-служб и других средств), особенно на не-PHP платформ.

Ответил 21/09/2009 в 02:55
источник пользователем

голоса
1

Если вы переносите данные между одним приложением и другими, это, как правило , почти всегда лучше использовать JSON закодированных данных , а не PHP сериализованных данные , как позже это формат специфичен для PHP , а не переносимый формат JSON.

Даже в ситуации, когда и сервер, и клиент PHP на основе приличествует использовать портативный формат, как JSON, чтобы позволить создание новых клиентов в будущем без необходимости изменять формат ответ от сервера.

Я не делал никаких бенчмаркинг этих двух себя, но если вы находите, что JSon кодирование быстрее, чем сериализации, чем все больше оснований, чтобы использовать его.

Кроме того, я предпочитаю JSON закодированные данные, как это проще, чем читать сериализованные данные и быстро может быть выброшено в поджигатель для визуализации.

Ответил 21/09/2009 в 03:05
источник пользователем

голоса
2

Когда вы только кодировать / сериализации несколько объектов / массива, я бы сказал, что разница в скорости будет не так важно: вы genherally не будет воспринимать его.

Разница заключается в том, что сериализации сделана специально для PHP; например, информация Сюр как классы не теряются при сериализации, и могут быть получены при десериализации.

С другой стороны, JSON не является специфическим для PHP, что означает, что это хороший формат обмена - его основное назначение в том, чтобы обмениваться данными между Javascript и PHP.


Например, рассмотрим следующий фрагмент кода:

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

$test = new A(10);

Теперь, давайте сериализации и десериализации $ тест:

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

Мы получаем :

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

то есть объект, экземпляр класса А.


Теперь, давайте делать то же самое с JSON:

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

Теперь мы только экземпляр StdClass:

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

JSON приятно обмениваться данные ( «класс А» нформация важно для PHP, но, вероятно, не имеет большого смысла для другого приложения); но имеет свои ограничения тоже.

Ответил 21/09/2009 в 03:07
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more