Нужен ли вообще этот DOM?

maxbrown

Guest
Нужен ли вообще этот DOM?

Сейчас пытаюсь разобраться с DOM, выяснил, что:
1. Попытка использования DOM начинается со скандала с провайдером, не желающим ради меня устанавливать "эту никому не нужную приблуду".
2. DOM - ещё недоделанный, но уже несколько раз переделанный продукт.
3. В DOM самая простенькая операция дампа узла превращается в геморрой на пол-дня.
4. DOM неизбежно приводит к переходу на unicode. Иначе запутаешься в бесконечных iconv

Q: Почему его вообще используют, если в нём такие запутанные и урезанные функции? Быстродействие? Что-то ещё? Почему не взять простенький xml2tree Билла Софтки и не забыть DOM, как страшный сон?

Вопрос не риторический, мне нужно хотя бы приблизительно знать: в какой именно момент развития проекта я пожалею о том, что отказался от DOM в пользу более простой объектной модели?
 

phprus

Moderator
Команда форума
maxbrown
1) Меняй провайдера.
2) Нормальная реализация DOM была доделана в php 5.0.0, а эта версия вышла уже более 3-х лет назад.
4) DOM поддерживает не только Unicode. А что в Unicode плохого?

в какой именно момент развития проекта я пожалею о том, что отказался от DOM
А это напрямую зависит от проекта. В некоторых проектах DOM вообще не нужен, а в некоторых он является очень удобным инструментом.
 

maxbrown

Guest
Проект связан с PHP-интерпретацией программ, написанных на языке программирования, создаваемом на базе упрощённого xml. Типа
<if>
<condition>...</condition>
<then>...</then>
<else>...</else>
</if>
Минус идеи - двойное интерпретирование (интерпретатор на интерпретируемом языке).
Есть основания считать, что в будущем потребуется оптимизация по быстродействию, вплоть до портирования движка с PHP на что-нибудь компилируемое. Есть подозрение, что в этом "чём-нибудь компилируемом" DOM будет. И есть уверенность, что xml2tree там точно не будет :)

Кстати. DOM вообще по быстродействию быстрее, чем создание и обработка дерева средствами PHP или нет?
 

phprus

Moderator
Команда форума
maxbrown
Я бы такое писал сразу с использованием чего-нибуть компилируемого (например С++) с использованием библиотеки типа libxml или TinyXml.

А если надо было бы писать на php, то я бы наверное писал с использованием DOM. Хотя обосновать это решение я сейчас не могу, так как мне не приходилось писать такие интерпретаторы.

DOM вообще по быстродействию быстрее, чем создание и обработка дерева средствами PHP или нет?
Я думаю, что на этот вопрос тебе никто так сразу ответ не даст. Это нужно проводить специальные замеры скорости на твоих конкретных задачах.
 

Alexandre

PHPПенсионер
DOM вообще по быстродействию быстрее, чем создание и обработка дерева средствами PHP или нет?
DOM PHP - это DOM обертка libxml2
libxml2 - однозначно быстрее, чем реализация разбора дерева на РНР.

Тормоз может быть в вызове из РНР DOM функций libxml2. Но все-же, это быстрее, чем реализация самого DOMа средствами РНР. Опять же зависит от структуры кол-ва нодев в Доме.
 
Сверху