Здравствуйте!
В процессе разработки и формирования больших отчетов (1000 страниц и более) выяснилось, что есть проблемы с размером готового отчета (файл MDC). Соответственно, возникают банальные проблемы с нехваткой памяти, как при генерации отчета, так и при выполнении экспорта в сжатый или зашифрованный форматы.
Например, у меня отчет размером в 300 Мб (MDC) не удается сохранить в сжатом виде из-за ошибки "Exception of type 'System.OutOfMemoryException' was thrown."
Я обратил внимание на несколько моментов в структуре готового отчета:
1. Названия некоторых объектов слишком длинные и значительно увеличивают размер.
Например, пришлось отказаться от таблиц, и только на этом я добился уменьшения размера почти в 2 раза.
Название объекта для ячейки таблицы значительно длиннее названия текстового элемента:
type="Text"
type="Stimulsoft.Report.Components.Table.StiTableCell"
2. Некоторые атрибуты элементов отчета могли бы использовать значения по умолчанию и не сохраняться в готовом отчете.
Например: isSer="true" или "Transparent"
При этом в моем готовом отчете более миллиона элементов и у всех одинаковые значения isSer="true", "Transparent". Это не один мегабайт лишних данных.
3. Использование стилей (на которые я очень надеялся) не приводит к уменьшению размеров готового отчета, так как параметры стиля повторяются у каждого элемента.
В результате вырисовываются следующие вопросы/предложения по усовершенствованию и оптимизации формата готового отчета:
1. Можно ли ввести короткие названия (алиасы) для всех типов элементов отчета?
2. Можно ли использовать значения по умолчанию для атрибутов без сохранения в готовом отчете?
3. Можно ли не дублировать в каждом элементе параметры стиля?
Спасибо
И снова большие отчеты
Re: И снова большие отчеты
Да, забыл упомянуть, что для нас этот вопрос критичен потому, что все отчеты формируются на выделенном сервере и доставляются пользователю в приложение через WCF-сервис. Поэтому кеширование при генерации ничего не решает. И объем передаваемых данных сильно влияет на конечный результат.
Re: И снова большие отчеты
Здравствуйте.
Вы можете сохранять отчеты в mdz формат.
В последних билдах добавлены новые методы сохранения/загрузки файлов готовых отчетов. Эти методы работают при включении свойств:или при включенном кэшировании в отчете.
Смысл этих методов: отчет сохраняется/загружается по одной странице, соответственно расход памяти уменьшается в разы.
Пока есть нюанс - из-за особенностей сериализации штрихкодов и чартов оптимизированной загрузке лучше скармливать отчеты после оптимизированного сохранения.
Спасибо.
Короткие названия добавили для StiPanel и StiTableCell, изменения будут доступны в нашем следующем предрелизном билде завтра.fantomus писал(а):1. Можно ли ввести короткие названия (алиасы) для всех типов элементов отчета?
Для большинства свойств так и делается. К сожалению, для некоторых это пока технически невозможно.fantomus писал(а):2. Можно ли использовать значения по умолчанию для атрибутов без сохранения в готовом отчете?
Со стилями тоже пока некоторые трудности. Формат документа уже устоялся, и изменения в нём требуют изменения значительной части кода и последующего долгого тестирования. Также от этого может пострадать обратная совместимость. В данный момент у нас есть другие более приоритетные задачи.fantomus писал(а):3. Можно ли не дублировать в каждом элементе параметры стиля?
Вы можете сохранять отчеты в mdz формат.
В последних билдах добавлены новые методы сохранения/загрузки файлов готовых отчетов. Эти методы работают при включении свойств:
Код: Выделить всё
StiOptions.Engine.DocumentLoadingOptimization = true;
StiOptions.Engine.DocumentSavingOptimization = true;
Смысл этих методов: отчет сохраняется/загружается по одной странице, соответственно расход памяти уменьшается в разы.
Пока есть нюанс - из-за особенностей сериализации штрихкодов и чартов оптимизированной загрузке лучше скармливать отчеты после оптимизированного сохранения.
Спасибо.