Недавно при просмотре официального курса swool появился короткий абзац, в котором конкретно говорится об эффективности функции JSON ﹣ декодирования. Медленная причина заключается в том, что ему нужно пройти каждый символ в тексте, чтобы найти EOF (конец файла: конец текстового потока, который подробно объясняется о боге EOF Руань Ифэн). Только после подтверждения формата и длины всей строки формат JSON может быть декодирован , то есть, если предположить, что длина всей строки равна n, то программа должна пройти n + 1 раз. Есть ли лучшее решение для некоторых сценариев с высоким уровнем параллелизма?
Еще одна распространенная функция сериализации-сериализация. После сериализации serialize поочередно запишет тип и длину значения в сериализованной строке. Если это так, сериализация должна иметь возможность форматировать в соответствии с символами, сгенерированными ранее при десериализации, вместо того, чтобы просматривать полный текст, чтобы найти EOF, независимо от того, длинный он или нет В случае строк, может ли десериализация быть более эффективной, чем JSON? Расшифровать?
Поэтому мы провели следующие эксперименты, соответственно, используя в качестве теста три типа массивов данных: китайский, английский и цифры, для одной сериализации и десериализации в цикл для тестирования, а мощность-это количество циклов:
$array = [ "I'm a goophp is free and widely used. At the same time, for competitors like Microsoft ASP, PHP is undoubtedly another efficient option. PHP is extremely suitable for website development. Its code can be directly embedded in HTML code. ", "I'm a good boy.", "A" = > PHP is free and widely used. At the same time, for competitors like Microsoft ASP, PHP is undoubtedly another efficient option. PHP is extremely suitable for website development, and its code can be directly embedded in HTML code ", 2 = > PHP is free and widely used. At the same time, for competitors like Microsoft ASP, PHP is undoubtedly another efficient option. PHP is extremely suitable for website development, and its code can be directly embedded in HTML code ", 'PHP is free and widely used. At the same time, for competitors like Microsoft ASP, PHP is undoubtedly another efficient option. PHP is extremely suitable for website development. Its code can be directly embedded in HTML code ', "I'm a good boy.", "I'm a good boy.", "I'm a good boy.", "I'm a good boy.", "I'm a good", "asdfnsadofhasd"];
$array = [ "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", "I'm a boy", ];
$array = [ 0 => 9115, 1 => 9115, 2 => 9115, 3 => 9115, 4 => 9115, 5 => 9115, 6 => 9115, 7 => 9115, 8 => 9115, 9 => 9115, ];
Результаты испытаний следующие
Можно видеть, что в английской и цифровой сериализации эффективность сериализации JSON в 2-3 раза превышает эффективность сериализации, в то время как в китайском тесте массива эффективность сериализации в 8-10 раз превышает эффективность JSON, что также подтверждает предыдущую гипотезу: Когда JSON сериализует и десериализует данные, чем длиннее длина строки, тем больше раз процессору требуется найти EOF. При сериализации записывается длина строки при сериализации, поэтому это займет меньше времени, чем JSON при десериализации
Однако, поскольку сериализация записывает длину и тип соответствующей подстроки, она будет занимать больше места, чем JSON в тех же данных, что также является способом обмена пространством на время.
Как вы можете видеть здесь, вы должны понимать применимые сценарии этих двух сериализаций: если это сценарий с коротким контентом, то лучше использовать JSON для упорядочения и перечисления, что не только эффективно, но и меньше по размеру строки, Если это сценарий с длинной строкой, вы можете рассмотреть возможность использования сериализации, эффективность выполнения программы будет намного выше, чем у JSON!
В конце статьи прилагается адрес школьного класса, полного галантереи: https://course.swoole-cloud.com/course-video/52