Что гораздо быстрее, XMLParser или SimpleXML - PullRequest
4 голосов
/ 09 апреля 2010

Как вы думаете, ребята? В настоящее время я использую SimpleXML для всего своего проекта, в котором в среднем используется 250 КБ памяти при 500 мкс / с обработки на исполнение. Я просто планирую перейти на XMLParser, ваш совет очень ценится.

Редактировать: Фактическое микротайм составляет 0,000578 микросекунд. Я просто запутался в милли и микро, лол.

Ответы [ 3 ]

16 голосов
/ 09 апреля 2010

Теоретически, по крайней мере, XMLParser (реализация SAX ) может быть более эффективной (по скорости, но особенно по памяти), чем SimpleXML (реализация DOM ), особенно при работе с большими документами (реализации DOM загружают все дерево XML в память, что может обременять ресурсы, в то время как реализации SAX позволяют программисту просто обходить XML без необходимости что-либо хранить в памяти, оставляя полностью на ваше усмотрение то, что, если что угодно, вы хотите сохранить в памяти) - см. тесты , сравнивающие различные DOM с различными реализациями SAX-парсеров.

Я говорю может , потому что выполнение SAX-обхода является программно более сложным , чем обход или запрос DOM, и плохое использование SAX (или использование SAX в ситуациях, когда DOM в любом случае лучше подходит, например, если в конце обхода SAX вы загрузили себя практически всего дерева в памяти), это может на самом деле привести к худшей производительности, чем использование DOM API .

4 голосов
/ 09 апреля 2010

В большинстве случаев XML Parser будет намного медленнее как в плане разработки, так и в плане исполнения, в основном потому, что вам придется писать / выполнять тонны пользовательского PHP-кода для навигации / чтения вашего документа.

В некоторых случаях вы можете найти некоторые улучшения, используя XMLReader (не уверен насчет XML Parser), но это требует дополнительного времени на разработку и более сложного обслуживания. Поскольку ваше приложение уже использует SimpleXML и использует только 250 КБ, ваше время, скорее всего, будет лучше потрачено на другие области вашего приложения. 500 мс - это довольно много для обработки XML с помощью SimpleXML, вы должны профилировать это и / или опубликовать свою самую ресурсоемкую процедуру в другом вопросе для оптимизации.

4 голосов
/ 09 апреля 2010

Да, XML Parser (не путать с XMLParser ) предпочтительнее, если у вас есть проблемы с памятью, потому что он не требует предварительной загрузки и предварительной загрузки всего файла -парсированный перед использованием. Это как fgets () или fread () по сравнению с file_get_contents ()

...