JSON или XML

В Интернете часто идут споры на тему того, какой формат лучше использовать для обмена данными: JSON или XML. Причем зачастую споры сводятся к тому, какой из них более удобен для чтения человеком (что есть дело привычки и того, с чем разработчик познакомился раньше — с JSON или с XML) и то, какой из них лучше поддерживается различными языками. Но последнее сегодня уже не столь актуально: поддержка и того, и другого сейчас уже есть во всех основных языках программирования.

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

Условия эксперимента

  • Исходные данные: список из 1000 групп, полученных с помощью функции groups.search API ВКонтакте с допонительными полями city,country,place,description,members_count,start_date,end_date,status
  • Версия PHP и OS: PHP 7.0.18-0ubuntu0.16.04.1 (cli) ( NTS )
  • Процессор: Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz, cache size : 4096 KB, bogomips: 4988.31
  • Измерения проводились по три раза для каждого режимов. Объем памяти измерялся с помощью функции memory_get_peak_usage с параметром true, времени — с помощью microtime с параметром true. Время получения JSON или XML с сервера не учитывалось.

Результаты измерений






Режим1 измерение2 измерение3 измерениеОбъем памяти
JSON (в объект)0.0276 с0.0298 с0.0272 с6291456 байт
JSON (в хеш)0.0252 с0.0264 с0.0287 с6291456 байт
XML0.0629 с0.0603 с0.0591 с4194304 байт

Из полученных данных видно, что парсинг JSON занимает примерно вдвое меньше времени, но при этом является в полтора раза более затратным по памяти, чем парсинг XML с теми же самыми данными. Таким образом, в общем случае целесообразнее использовать JSON (также он предпочтельнее, когда предполагается обработка данных на клиенсткой стороне), но в ситуации, когда скорость не существенна, имеет смысл отдавать предпочтение XML.