![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Привет.
Захотелось мне сохранять в memcache распарасенный XML. Для работы с XML в проекте везде используется XML::LibXML, использовать другие модули не хочется. Проблема в том, что сохранять в кэш XS-объекты нельзя( Может кто-то сталкивался? Есть какие-то хаки? -------------------- Died at Life.pl line 21 |
|||
|
||||
gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
может cерилизировать JSon или Storable и сохранить?
Добавлено через 6 минут и 41 секунду
|
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
если объект может самосериализоваться (сохранять внутреннее состояние), то проблем нет.
если не может, то можете дописать требуемую функциональность и послать патч мантайнеру. |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Их бы не было, если бы объект создавался PurePerl кодом. Когда вы пытаетесь сохранить объект созднный XS кодом, то сохраняется по сути только указатель на сишную структуру. -------------------- Died at Life.pl line 21 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
ключевое слово "самосериализоваться"
|
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
KSURi, конечно нельзя. XS объект - это C структура(ы) которые привязаны к адресам в памяти, для того что бы записать их MC - нужно избавиться от адресной привязки, т.е. сереализовать.
В вашем случае XML - это и есть сереализованное представление. Так что храните сам XML а не DOM модель. Парсится медленно - юзайте libxml2. Все равно медленно? не юзайте XML. |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Я в курсе)
В первом посте я написал, что юзаю XML::LibXML, который является оберткой к libxml2. "не юзать XML" не получится. В принципе, я уже понял, что придется думать в другую сторону. Вопрос можно считать снятым. -------------------- Died at Life.pl line 21 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
KSURi, можно конечно "расчехлить свой компилер" и написать примочку для libxml2 на C, что бы DOM структуру упаковывала в линейный кусок памяти, а потом обратно. Это будет круто, ибо на такую задачу натыкались кроме вас люди (как минимум я =)).
В конце я решил, что 8 тыс. разборов / сереализаций в секунду (для XML на экран размером) - это достаточно быстро, что бы не парится. |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
XML2JSON не то?
|
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
shamber, XML и JSON далеко не эквиваленты. к тому же эта та же самая сереализация. Не думаю, что это намного быстерее чем внутренний механизм libxml2.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |