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 байт |
XML | 0.0629 с | 0.0603 с | 0.0591 с | 4194304 байт |
Из полученных данных видно, что парсинг JSON занимает примерно вдвое меньше времени, но при этом является в полтора раза более затратным по памяти, чем парсинг XML с теми же самыми данными. Таким образом, в общем случае целесообразнее использовать JSON (также он предпочтельнее, когда предполагается обработка данных на клиенсткой стороне), но в ситуации, когда скорость не существенна, имеет смысл отдавать предпочтение XML.