libxml2 всегда будет быстрее, чем NSXMLParser по многим причинам, однако, это зависит от вас, что более полезно для вашего проекта.
NSXMLParser, в целом, красивее. Код имеет смысл, как предполагается, с синтаксическим анализатором, и это настоящий класс Какао со всеми соглашениями там. Если удобство и чистый код - ваши главные приоритеты, тогда вам следует придерживаться NSXMLParser.
Хотя NSXMLParser использует libxml2 на бэкэнде, он медленнее из-за основ Objective-C и ахиллесовой пяты Objective-C. При синтаксическом анализе XML вы, по сути, просто делаете много узких циклов снова и снова, ища интересующие вас теги.
В этом и заключается урок - когда в Objective C, находящемся в тесном цикле, когда вы не можете использовать быстрое перечисление объектов, вы видите серьезное снижение производительности. Dispatch / Delegate RespondsToSelector / и другие конструкции языка Objective C дают вам реальный недостаток.
Я не собираюсь вдаваться в рассылку, но суть в том, что всякий раз, когда вы получаете доступ к чему-то вроде этого: "[zomg lolz]" вы передаете сигнатуру метода диспетчеру target-c, чтобы найти цель C -функция для вашей подписи метода Objective-C. Этот процесс поиска, когда выполняется снова и снова, может значительно снизить вашу производительность.
Если вы на iPhone, зайдите на libxml2 и не оглядывайтесь назад - но если у вашей целевой машины есть два процессора и больше оперативной памяти, чем бога, я бы пошел NSXMLParser для упрощения поддержки кода.