Насколько быстрой/эффективной является проверка схемы?

Каковы практические ограничения проверки XML-файлов с использованием стандартных библиотек и выражений схемы по вашему опыту?

Имеются ли какие-либо цифры о том, сколько времени требуется файлу длиной X МБ / Y строк для проверки с использованием языка P / библиотеки Q и набора утверждений схемы Z?

В качестве очень грубого примера я смотрю, например. Входные XML-файлы размером до 300 МБ с c. 200 000 «записей» на файл и (только приблизительно) 200 утверждений XML для проверки на запись, возможно, 50% из которых более сложны, чем просто 0 или 1 совпадение в одной и той же «записи».


person Michael    schedule 05.10.2016    source источник
comment
Это много переменных, с которыми нужно бороться. Попробуйте и убедитесь сами.   -  person OldProgrammer    schedule 05.10.2016
comment
OK. Как мне изменить вопрос, чтобы он работал? Например. Вам нужны примеры номеров? Или я должен запросить бесплатные файлы примеров?   -  person Michael    schedule 05.10.2016


Ответы (2)


Ваш вопрос слишком широк, чтобы ответить в целом, но, возможно, вы найдете ценность в одной точке данных...

Я написал Schematron, который применяет ~100 шаблонов к ~2000 XSD-файлам для проверки соответствия рекомендациям по проектированию. Проверки завершаются и производят HTML-рендеринг результатов примерно за 37 секунд. Это время включает в себя компиляцию Schematron в XSLT и оркестровку процесса на основе муравьев.

Это было достигнуто исключительно за счет функциональности и ремонтопригодности кода, и поэтому, вероятно, его можно было бы эффективно оптимизировать, если бы требовалось более быстрое выполнение.

person kjhughes    schedule 05.10.2016
comment
Спасибо @kjhughes - да, при отсутствии других ответов, которые дали мне отправную точку, даже одна точка данных была полезна! - person Michael; 06.10.2016

Schematron позволяет вам писать очень сложные предикаты для проверки экземпляра документа. Время, которое потребуется, будет почти полностью зависеть от сложности правил, которые вы просите его оценить. Таким образом, ваш вопрос немного похож на вопрос «сколько времени потребуется для запуска программы C» без предоставления какой-либо информации о программе, кроме того факта, что она написана на C.

person Michael Kay    schedule 05.10.2016
comment
Я не решаюсь ответить на ваш ответ чем-либо, кроме как спасибо, мистер Кей :-) Я просто искал эмпирический путь к проблемной области, чтобы сэкономить время на фактическом запуске кода исключительно ради его измерения. Любые советы, подобные этому, будут только приветствоваться. На немецком языке я бы попросил Erfahrungswerte. - person Michael; 06.10.2016