Страница 4 из 5

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 12:55
Constantine
Привет, Юра!
А с майкрософтовским парсером ты не игрался?

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 14:56
Yufil
Привет, Костя!
Насколько мне известно, кларионовский парсер - это Expat, он тоже стандартный. Парсер целиком написан на сях и не нуждается во внешних интерфейсах. Зачем Microsoft?

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:08
Constantine
Есть гигантская структура (ок. 1.5 Гб), состоящая из нескольких тысяч связанных между собой в цепочки xml-файлов разного размера (от 400 Кб до 100+ Мб). Ее нужно парсить, но не всю за раз, а по частям примерно по 500 Мб. Делать это нужно каждый месяц.
Соответственно, встает вопрос быстродействия. Сейчас сделано на С, но на кларионе было бы лучше.
Поэтому и интересуюсь...

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:19
Дед Пахом
Парсер Microsoft (msxml6) это EasyXML

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:23
Constantine
Дед Пахом писал(а): 19 Июнь 2019, 15:19Парсер Microsoft (msxml6) это EasyXML
По сути, это dll-обертка над OLE. Вряд ли будет работать быстрее, чем напрямую...

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:25
Дед Пахом
Constantine писал(а): 19 Июнь 2019, 15:23По сути, это dll-обертка над OLE.
Это не dll-обертка над OLE, это просто COM dll с сотней COM объектов.

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:28
Constantine
Возможно. Не знаю. А кто-нибудь ее юзал на больших объемах?

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:49
Yufil
Вряд ли скорость парсинга для MS и Expat сильно отличается ( коллега Aragorn мерил ).
А померить достаточно просто. На любое кларионовское окно добавь кнопку, в качестве обработчика шаблон ViewXML
и попробуй загрузить XML-файл.

... А цепочки связанных xml-файлов это круто... Может быть, поюзать что-то более подходящее, чем Clarion ( Spark - R - Julia - Pandas )?

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:54
Дед Пахом
Constantine писал(а): 19 Июнь 2019, 15:28А кто-нибудь ее юзал на больших объемах?
Google в помощь.

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 15:56
Constantine
Уже юзается... Есть софтина на С, которая извлекает нужные данные и кладет их в общую область памяти, из которой я их и забираю. Проблема в том, что это нужно синхронизировать (т.е. нужно отлавливать момент окончания записи, а уже потом читать). Вторая проблема в том, что пишет она в своем формате, который потом тоже нужно разбирать. В итоге, процесс занимает 3-4 часа. Хотелось бы ускорить... :-)

Чисто гипотетически !

Добавлено: 19 Июнь 2019, 16:17
finsoftrz
Цепочки xml файлов - это, случаем, не ОДА (http://oda.su) ? Там вместо обычной базы xml. Наследование. Парсер на C. Помнится, лет 10 назад мне их вождь в частной беседе мозг выносил. Отмирающие файлы, как клетки головного мозга. Ms и Oracle вели исследования в этом направлении, у них не получилось, а у нас получилось. В общем, ощущение было, как к фрицам в лабораторию попал... :-)

Чисто гипотетически !

Добавлено: 20 Июнь 2019, 8:15
Constantine
Нет, не оно. Там большая буржуйская софтина, которая занимается чем-то вроде обработки строительных смет. Она-то и выгружает данные в таком виде.

Чисто гипотетически !

Добавлено: 20 Июнь 2019, 8:25
Игорь Столяров
Constantine писал(а): 20 Июнь 2019, 8:15Там большая буржуйская софтин
И эта "буржуйская софтина" выгружает XML в кодировке Win-1251 ?!
Чудны дела рук детей твоих, господи … :)

Чисто гипотетически !

Добавлено: 20 Июнь 2019, 8:56
Constantine
Гм...
Это связанные вещи, но я этого не говорил...
Есть задача: ускорить обработку больших xml-файлов. Для этого нужно что-то написать на кларионе. Очевидно, что штука получится большая и серьезная, поэтому логично применять ее и для решения других задач, связанных с обработкой xml. А для этого нужна нормальная поддержка win1251.
Что вызвало Ваше удивление?

Чисто гипотетически !

Добавлено: 20 Июнь 2019, 9:19
Yufil
Я в модуле cpxml.dll шестнадцатеричным редактором правил строку ( могу и ошибаться ) windows-1250 на windows-1251. Тоже работает, правда только с файлами, из памяти не... Но потом разобрался с UTF-8 и отказался от этой идеи