Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Для профи > Много ли памяти выделяется |
Автор: acdcee 25.8.2008, 16:01 | ||
Вот не давно написал целый класс, даже библиотеку для своих нужд. Смысл в библиотеки в том что вывод и работа с html тегами представлена как в JS технологией DOM. Т.е каждый узел имеет свои свойства и прочее. Так вот при выводе уже переведенного с объектов дерево html тегов в строку, столкнулся с такими проблемами как скорость загрузки и выделеной памяти. При разборе более 500 тегов: выделяется памяти около 4 мегабайт, скорость загрузки документа (в браузер) 0,200 приблизительно. При разборе более 2000 тегов: выделяется памяти около 8 мегабайт, скорость соотвественно упала где то до 0,700 приблизительно. Вопрос В чем причина упадка скорости. Почему в некоторых ситауциях не работает такая проверка как
И второе по какому принципу dump_mem строить документ, и сколько памяти выгружается для этого, зависит ли это от оюъема загруженного в него документа. К чему все было сказано, да к тому что таким образом я к примеру меняю аттрибут класса <div class="test"> через метод getElementById своего класса ( т.е получаю объект данного узла и меняю значение аттрибута class на то что мне нужно без всяких там прописей html в php) и динамически вывожу на экран посетителя. В принцепе скорость нормальная на загрузку и сервер не виснет. Как тут и что можно оптимизировать???? Плюс еще есть parser шаблонов. |
Автор: krundetz 25.8.2008, 16:05 |
acdcee, а тестировали на сервере или на домашнем компе? Насколько я помню в PHP есть расширения которые позволяют работать с DOM документами напрямую может вм стоит посмотреть в их сторону. |
Автор: acdcee 27.8.2008, 16:41 | ||
Есть такие функции как xml_create_object и прочее, точную название не помню уже давно в мануал не лазил. Ну к примеру не скомпилирован данный php движек в сторону этих функций, и уже видел такой пример. Дальше что мне делать ??? ![]() Вот и приходится самому писать... А как на счет того чтобы при парсинге собрать данный класс, засунуть его в serialize а потом с этого файла делать вот так к примеру
т.е я пропарсил весь документ, в сериализе засунул данный класс и всех потомков по дереву, и при проверке больше необращаюсь к парсингу. Так как serialize сохраняет и ссылки и к примеру nodeName уже будет иметь имя тега, можно вызывать экземпляр класса dom_document И дальше им пользоваться, при чем appendChild и прочее не так уж в движке часто используются и что самое главное сегодня тестровал уже напрочь вылизанный класс, вся потеря памяти и большой жер идет при парсинге и загоне тегов в объекты. Как такой вариант для работы над классами????? Плюс что еще не мало важно, это включения таких методов как innerHTML и innerText ![]() Добавлено через 6 минут и 42 секунды Тестировал и на сервере и на локальной машине. Наверно сервер мощноватый был - скорость загрузки была 0.090 памяти кушал около 8 метров Локальный сервер выдавал не много хуже - скорость 0.600 память 8.9 метров XMLReader и XMLWriter - тут будут проблемы с тегами и как xml_parse будет ругаться на DOCTYPE c аттрибутами PUBLIC Плюс данные функции не корректно себя ведут с тегами meta input и не каждый дизайнер будет их править У меня же они автоматом исправлялись Плюс как мне известно в скорости не большой у них отрыв. |