powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport и большой отчёт
25 сообщений из 36, страница 1 из 2
FastReport и большой отчёт
    #39682788
cr@nk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как можно побороть out of memory?
Есть Delphi 10.2
FastReport 5.6.9

Клиенту требуется сделать выгрузку всех активных клиентов (у кого открыт договор на обслуживание). Таких записей 9-10к
Полей не так уж и много. Сам запрос за секунду выполняется
А вот при генерации отчёта программа думает несколько минут (даже на относительно мощном ПК) и выдаёт out of memory
64 bit приложение компилировать не пробовал, т.к.:
1. Либы x64 не стоят
2. Компы у клиента слабые (pentium), памяти 3-4 Гб
3. Из-за п.2 у них стоят WinXP и Win7 x86

На одну страницу помещается примерно 20 записей. Т.е. страниц дофига на самом деле.

Что в такой ситуации можно сделать?
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682810
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cr@nk,

не использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ...
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682824
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ma1tuscr@nk,

не использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ...
если надо сгенерить - значит, надо сгенерить.
я бы делал порциями, а не всё сразу
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682831
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cr@nk Таких записей 9-10к
...
На одну страницу помещается примерно 20 записей. Т.е. страниц дофига на самом деле.
Целых 500. Это не так много. Если только в отчёте не присутствуют изображения с разрешением 2000х3000
Попробуйте установить
Код: pascal
1.
2.
3.
frxReport1.EngineOptions.UseFileCache := True;
frxReport1.PreviewOptions.PictureCacheInFile := True;
frxReport1.PreviewOptions.PagesInCache := 10;


Если не поможет - ma1tusтикет с тестовым объёмом в ТП FR
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682834
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

ну, если заказчик определяет техчасть, то... ладно ) почему бы нет, можно и кусками, с подтяжкой на предыдущую страницу, формировать... чтобы в итоге обнаружить, что превью не тянет; смысл-то, тыкаться вслепую - откуда ТС в аут выпадает...
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682838
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отлично запросы разбиваются на части по вменяемое количество строк
и превью выводится столько раз, сколько понадобится
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682841
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ma1tusdefecator,

ну, если заказчик определяет техчасть, то... ладно ) почему бы нет, можно и кусками, с подтяжкой на предыдущую страницу, формировать... чтобы в итоге обнаружить, что превью не тянет; смысл-то, тыкаться вслепую - откуда ТС в аут выпадает...
FR формирует картинки в памяти, целиком все, потом их выводит на принтер
Если страниц много, то Out of memory неизбежен
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682846
cr@nk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ma1tusне использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ...
Ну вот надо заказчику получить печатный вариант этой таблички
А что даст ТП FR ? Я пробовал выгрузить просто 1к записей - падает. 200 - норм обрабатывает. Это на скорую руку.
Не представляю, что в ТП искать.

defecatorя бы делал порциями, а не всё сразу
Начал думать в этом направлении, но пока не придумал красивой реализации

gpiЦелых 500. Это не так много. Если только в отчёте не присутствуют изображения с разрешением 2000х3000
Попробуйте установить
Нет, не помогло. Я до создания топика эти параметры менял (кроме картинок, т.к. их нет в отчёте)

krapotkinотлично запросы разбиваются на части по вменяемое количество строк
и превью выводится столько раз, сколько понадобится
Это и есть часть проблемы по красивой реализации. Если это печать, то тут без проблем можно распечатать все отчёты.
А если надо сохранить всё в один файл? Любят там PDF и Excel. То это всё становится не так уж и просто

На данный момент заколхозил так: таблица выгружается просто в CSV, а дальше руками приводится к нормальному виду перед печатью или отправкой этого файла.
Благо это функция редко востребована пока что.
А пока буду реализовывать как-то ещё
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682850
cr@nk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб.
Ну предел для 32 бит
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682866
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20000 строк. Время генерации - доля секунды
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682887
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аналогично, строил ответ на 2000 страниц. Строился мгновенно.
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682953
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так и тестят разрабы сред и либ свои поделия, а на реальных задачах оказывается не так чтобы уже и работает
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682974
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cr@nk,

а не может такого быть, что в отчете используется нестандартный (manual) с хитрой логикой вывод через Engine? И из-за ошибки в коде случился вечный цикл?


или из кода Delphi в цикле по датасету и забыли .Next вызвать?
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39682985
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён cr@nk,

или из кода Delphi в цикле по датасету и забыли .Next вызвать?


Та ну, 200 строк он же как-то выводит...
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683003
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cr@nkP.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб.
Ну предел для 32 бит
Полное собрание сочинений Л.Н. Толстого в 90 томах меньше места занимает, а у вас 500 страниц.
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683009
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterКроик Семён cr@nk,

или из кода Delphi в цикле по датасету и забыли .Next вызвать?


Та ну, 200 строк он же как-то выводит...
Ещё можно при каждом выводе бэнда создавать мемки на нём, а старые не удалять
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683042
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ограничить запрос банальным limit и проверить, сможет ли сформироваться меньшее количество страниц (и заодно оценить регрессию в производительности от кол-ва данных). Возможно, проблема не в самом фасте, а в том коде, что используется для формирования (например, есть кастомный код в самом отчете для форматирования или получения данных; или в датасете авторасчетные поля с внешними запросами).
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683048
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Balicr@nkP.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб.
Ну предел для 32 бит
Полное собрание сочинений Л.Н. Толстого в 90 томах меньше места занимает, а у вас 500 страниц.
сомневаюсь, что 90 томов отсканированных страниц в растре будет весить меньше 4-х гигов
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683090
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorсомневаюсь, что 90 томов отсканированных страниц в растре будет весить меньше 4-х гигов
90 томов от 2х до 5 метров.
5 * 90 = 450 метров
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683091
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в PDF - 30м
30*90=2700, около 3гиг
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683098
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimaBr,

я же написал - в РАСТРЕ, а не в сжатом виде
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683162
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecatorя же написал - в РАСТРЕ, а не в сжатом виде
Так может и cr@nk в растре выводит?
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683175
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Balidefecatorя же написал - в РАСТРЕ, а не в сжатом виде
Так может и cr@nk в растре выводит?

FR страницы формирует вроде как в растре, потому и память жрёт, как не в себя
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683206
_Den_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator,

Нет, загруженные страницы хранятся как объекты в кеше (PagesInCache).
Все остальное выгружается в XML.
Никаких растров там нет.

автор=cr@nk А что даст ТП FR ?
Если это с нашей стороны и можно быстро поправить, то исправим в ближайшее время.

Но тут нужен конкретный кейс, а не абстракции. Обычный отчет на такое кол-во записей не может столько отъедать памяти.
Это только возможно если на одной страницы тысячи объектов с текстом. Или к примеру рич тест с контентом в несколько десятков мегабайт.
...
Рейтинг: 0 / 0
FastReport и большой отчёт
    #39683209
_Den_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить. Табличные экспорты вроде xls могут отъедать память, там кеширования нет.
Но экспорт легко можно разбивать на файлы, если задавать ко-во страниц для экспорта.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport и большой отчёт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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