powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Слишком долгий процесс транформации
14 сообщений из 14, страница 1 из 1
Слишком долгий процесс транформации
    #34897246
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть выборка из хранимки, которая в коде преобразуется в DataSet c несколькими таблицами. Дальше эти данные нужно отобразить в word-документе.
Есть примерно такой шаблон.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xsl:template match="/"

<xsl:for-each select="MyDataSet/MyTable1">	
<w:tbl><w:tr><w:tc>
<xsl:value-of select="TableField1"/>
</w:tc></w:tr></w:tbl>
.....
</xsl:for-each>

<xsl:for-each select="MyDataSet/MyTable2">	
...
</xsl:for-each>

.....

</xsl:template> 


Внутри for-each данные вставляются в таблицы.
Таблиц в DataSet 5, и кое-какие из них содержат всего одну строку, т.е. в принципе тут цикл не нужен, очевидно, нужно применить какой то другой оператор..

Все работает так как нужно, но уж очень медленно. Когда таблица была одна эта операция производилась нааамного быстрее.
В чем может быть причина снижения быстродействия? и как эту трансформацию хоть немного можно ускорить?
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34897517
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в датасете только таблицы?
какого размера хмлник?
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34897806
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoв датасете только таблицы?
да в DataSet только таблицы.
maXmoкакого размера хмлник?
файл xml у меня не формируется, я пользуюсь GetXML() для DataSet.
Для примера сформировала xml-файлик на 10 записей, получился размером 8Кб.
трансформация этого файла происходила 40 секунд.
А мне надо ориентироваться на 300-500 записей в этом файле.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34897889
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
princes_kaда в DataSet только таблицы.тогда попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<xsl:template match="/">
 <xsl:apply-templates select="MyDataSet/*"/>
</xsl:template>

<xsl:template match="MyTable1">
 <w:tbl><w:tr><w:tc>
  <xsl:value-of select="TableField1"/>
 </w:tc></w:tr></w:tbl>
</xsl:template>

<xsl:template match="MyTable2">
 ...
</xsl:template>

princes_kaДля примера сформировала xml-файлик на 10 записей, получился размером 8Кб.
трансформация этого файла происходила 40 секунд.да, это ненормально, ты уверена, что все эти 40 секунд уходят именно на трансформацию? Может, он его валидировать пытается? MSXML это любит.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34898003
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoда, это ненормально, ты уверена, что все эти 40 секунд уходят именно на трансформацию? Может, он его валидировать пытается? MSXML это любит.
ну..зависание процесса происходит в методе Transform.
Да и пока в меня в выборке не появились дополнительные таблички все работало намного быстрее..

а что значит валидировать?
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34898151
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
валидация – проверка правильности документа.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34898174
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо :) а как обнаружить выполняется она или нет?
и как ее можно отключить?
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34898228
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
она выполняется до трансформации – при парсинге входного документа.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34898232
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и после трансформации – при парсинге выходного документа, если парсинг имеет место.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34900837
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы, "maXmo"!
С вопросом валидации я разобралась, ни на этапе формирования входного xml, ни на этапе записи xml после трансформации валидации не происходит.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34901412
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, возможно, ты просто страшное преобразование написала, попробуй оставить инструкции только для одной из таблиц, потом – только для другой и т.д., возможно, это определит проблемный шаблон.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34901815
princes_ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoкстати, возможно, ты просто страшное преобразование написала, попробуй оставить инструкции только для одной из таблиц, потом – только для другой и т.д., возможно, это определит проблемный шаблон.
да, ты прав, трансформация одной из таблиц занимает 75% всего времени.
По шаблону там на выходе(в rtf-документе) таблица с довольно сложной структурой, куча строк разбиты на ячейки в хаотичном порядке.. и никуда от этого не деться. Может ли сложность результирующего xml влиять на длительность процесса? Данных кстати в ту табличку подсовывается немного, только условие одного из значений проверяется(по несколько раз в каждой строке) и в зависимости от этого значения выводится-не выводится картинка (галочка в чекбоксе).
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34902013
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на длительность процесса влияет трудоёмкость трансформации. Не знаю, никогда не сталкивался с необходимостью повышения быстродействия хслт-преобразования.
...
Рейтинг: 0 / 0
Слишком долгий процесс транформации
    #34902545
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
princes_ka maXmoкстати, возможно, ты просто страшное преобразование написала, попробуй оставить инструкции только для одной из таблиц, потом – только для другой и т.д., возможно, это определит проблемный шаблон.
да, ты прав, трансформация одной из таблиц занимает 75% всего времени.
По шаблону там на выходе(в rtf-документе) таблица с довольно сложной структурой, куча строк разбиты на ячейки в хаотичном порядке.. и никуда от этого не деться. Может ли сложность результирующего xml влиять на длительность процесса? Данных кстати в ту табличку подсовывается немного, только условие одного из значений проверяется(по несколько раз в каждой строке) и в зависимости от этого значения выводится-не выводится картинка (галочка в чекбоксе).

Да, вполне возможно это именно оно и есть, тем более что по вашим словам очень часто выполняется. Особенно если доступ идет по неоптимальному пути (например юзается что-нть типа //some_node[some_condition] там где без поиска "от корня и везде" можно прекрасно обойтись). Попробуйте оптимизировать пути доступа или, если логика позволяет, вынести эту проверку как можно выше из циклов (сохранять в переменную и применять в условиях проверку переменной).
Если поможет - замечательно, если нет - продолжайте дальше поиски методом последовательного комментирования проверяемых кусков. Когда точно локализуете проблему - приводите пример кода, будем думать.

ЗЫ Спросил себя "Интересно а профайлеры для xslt существуют ?" Погуглил - однако существуют. Заглянул в первый - платный :( Но вроде есть бесплатный триал ;) Если будете пробовать - пишите о результатах.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Слишком долгий процесс транформации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]