У меня есть две идентичные веб-страницы, кроме php-кода. Один использует SimpleXML, а другой использует DOMDocument. Код редактирует XML-файлы (чтение, добавление узлов, удаление узлов).
С SimpleXML я должен удалить узлы, используя:
unset($node);
Однако с DOMDocument я использую:
$node->parentNode->removeChild($node)
Несмотря на то, что SimpleXML выглядит выигрышно из-за его краткости, в итоге на загрузку страницы, использующей SimpleXML, уходит дополнительно 0,4 секунды (обе страницы имеют одинаковое количество строк php).
В чем причина такой разницы в производительности? Это функция unset (), которая утомляет это?
SimpleXML — это абстракция в той же библиотеке XML DOM, которую использует сама реализация DOM. Но это абстракция, реализованная в C. Это означает, что здесь будут ситуации, когда SimpleXML быстрее, потому что он комбинирует несколько действий на уровне C, и другие, где он медленнее, потому что он просто добавляет синтаксический сахар.
Если вы выполняете много манипуляций с XML, использование XSLT может оказаться еще более быстрым решением.
Как и все оптимизации, вы должны измерить и решить.
Других решений пока нет …