|
|
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Подскажите, как можно побороть 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 записей. Т.е. страниц дофига на самом деле. Что в такой ситуации можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 19:53 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
cr@nk, не использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 20:28 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
ma1tuscr@nk, не использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ... если надо сгенерить - значит, надо сгенерить. я бы делал порциями, а не всё сразу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 21:08 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
cr@nk Таких записей 9-10к ... На одну страницу помещается примерно 20 записей. Т.е. страниц дофига на самом деле. Целых 500. Это не так много. Если только в отчёте не присутствуют изображения с разрешением 2000х3000 Попробуйте установить Код: pascal 1. 2. 3. Если не поможет - ma1tusтикет с тестовым объёмом в ТП FR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 21:32 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
defecator, ну, если заказчик определяет техчасть, то... ладно ) почему бы нет, можно и кусками, с подтяжкой на предыдущую страницу, формировать... чтобы в итоге обнаружить, что превью не тянет; смысл-то, тыкаться вслепую - откуда ТС в аут выпадает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 21:50 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
отлично запросы разбиваются на части по вменяемое количество строк и превью выводится столько раз, сколько понадобится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 22:04 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
ma1tusdefecator, ну, если заказчик определяет техчасть, то... ладно ) почему бы нет, можно и кусками, с подтяжкой на предыдущую страницу, формировать... чтобы в итоге обнаружить, что превью не тянет; смысл-то, тыкаться вслепую - откуда ТС в аут выпадает... FR формирует картинки в памяти, целиком все, потом их выводит на принтер Если страниц много, то Out of memory неизбежен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 22:18 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
ma1tusне использовать отчетник для выгрузки (9-10K) | тикет с тестовым объёмом в ТП FR | madExcept etc ... Ну вот надо заказчику получить печатный вариант этой таблички А что даст ТП FR ? Я пробовал выгрузить просто 1к записей - падает. 200 - норм обрабатывает. Это на скорую руку. Не представляю, что в ТП искать. defecatorя бы делал порциями, а не всё сразу Начал думать в этом направлении, но пока не придумал красивой реализации gpiЦелых 500. Это не так много. Если только в отчёте не присутствуют изображения с разрешением 2000х3000 Попробуйте установить Нет, не помогло. Я до создания топика эти параметры менял (кроме картинок, т.к. их нет в отчёте) krapotkinотлично запросы разбиваются на части по вменяемое количество строк и превью выводится столько раз, сколько понадобится Это и есть часть проблемы по красивой реализации. Если это печать, то тут без проблем можно распечатать все отчёты. А если надо сохранить всё в один файл? Любят там PDF и Excel. То это всё становится не так уж и просто На данный момент заколхозил так: таблица выгружается просто в CSV, а дальше руками приводится к нормальному виду перед печатью или отправкой этого файла. Благо это функция редко востребована пока что. А пока буду реализовывать как-то ещё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 22:21 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
P.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб. Ну предел для 32 бит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 22:27 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
20000 строк. Время генерации - доля секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 23:44 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Аналогично, строил ответ на 2000 страниц. Строился мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 07:19 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
вот так и тестят разрабы сред и либ свои поделия, а на реальных задачах оказывается не так чтобы уже и работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 10:32 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
cr@nk, а не может такого быть, что в отчете используется нестандартный (manual) с хитрой логикой вывод через Engine? И из-за ошибки в коде случился вечный цикл? или из кода Delphi в цикле по датасету и забыли .Next вызвать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:12 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Кроик Семён cr@nk, или из кода Delphi в цикле по датасету и забыли .Next вызвать? Та ну, 200 строк он же как-то выводит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:22 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
cr@nkP.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб. Ну предел для 32 бит Полное собрание сочинений Л.Н. Толстого в 90 томах меньше места занимает, а у вас 500 страниц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:49 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
DarkMasterКроик Семён cr@nk, или из кода Delphi в цикле по датасету и забыли .Next вызвать? Та ну, 200 строк он же как-то выводит... Ещё можно при каждом выводе бэнда создавать мемки на нём, а старые не удалять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:54 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Ограничить запрос банальным limit и проверить, сможет ли сформироваться меньшее количество страниц (и заодно оценить регрессию в производительности от кол-ва данных). Возможно, проблема не в самом фасте, а в том коде, что используется для формирования (например, есть кастомный код в самом отчете для форматирования или получения данных; или в датасете авторасчетные поля с внешними запросами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 12:46 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Balicr@nkP.S.: При использовании кэша на диске тоже ловлю аут и видно, что временный файл весит 4 Гб. Ну предел для 32 бит Полное собрание сочинений Л.Н. Толстого в 90 томах меньше места занимает, а у вас 500 страниц. сомневаюсь, что 90 томов отсканированных страниц в растре будет весить меньше 4-х гигов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 12:54 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
defecatorсомневаюсь, что 90 томов отсканированных страниц в растре будет весить меньше 4-х гигов 90 томов от 2х до 5 метров. 5 * 90 = 450 метров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 13:52 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
в PDF - 30м 30*90=2700, около 3гиг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 13:53 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
DimaBr, я же написал - в РАСТРЕ, а не в сжатом виде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 14:00 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
defecatorя же написал - в РАСТРЕ, а не в сжатом виде Так может и cr@nk в растре выводит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 15:59 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
Balidefecatorя же написал - в РАСТРЕ, а не в сжатом виде Так может и cr@nk в растре выводит? FR страницы формирует вроде как в растре, потому и память жрёт, как не в себя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 16:33 |
|
||
|
FastReport и большой отчёт
|
|||
|---|---|---|---|
|
#18+
defecator, Нет, загруженные страницы хранятся как объекты в кеше (PagesInCache). Все остальное выгружается в XML. Никаких растров там нет. автор=cr@nk А что даст ТП FR ? Если это с нашей стороны и можно быстро поправить, то исправим в ближайшее время. Но тут нужен конкретный кейс, а не абстракции. Обычный отчет на такое кол-во записей не может столько отъедать памяти. Это только возможно если на одной страницы тысячи объектов с текстом. Или к примеру рич тест с контентом в несколько десятков мегабайт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 18:01 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=100&tid=2040560]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 343ms |

| 0 / 0 |
