Методы повышения скорости работы FastReport3
Eugene Lachinov
Санкт-Петербург
Есть ли они ?, как то все не шустро
Комментарии
На FastReport 3.0 появляется пустое окно предварительного просмотра, задержка секунд пять, показывается печатная форма, если в какое-либо поле отчета добавить ошибку, то после показа печатной формы спустя тоже порядка 5-10 секунд показывается текст ошибки
DesignReport тоже вызывается несколько с напрягом, если в самом дизайнере Дизайнере загрузить другую форму, то не блокируется перерисовка панели Поля БД, дерево мигает
В печатной форме есть код, порядка 500 строк, может скрипт тормозит, пока не знаю
TfrxReport.PrepareScript вызывается два раза, первый
раз в procedure TfrxDesignerForm.PreviewCmdExecute(Sender: TObject);
а потом в TfrxReport.PrepareReport(ClearLastReport: Boolean = True): Boolean;
PrepareScript: Время: 5203 мc., Количество: 2
TfsScript.FindLocal: Время: 3126 мc., Количество: 23618
От себя добавлю, что что в своей проге отлично уживаются Fastreport со своим скриптером и свой самописный скриптер, которые поддерживает 90-95 % синтаксиса Object Pascal (с инспекторами объектов, палитрой компонентов и т.д.). Предварительную обработку и получение данных провожу на своем скриптере, а дальнейшую уже средствами Fastreport. Так что никто из пользователей не жаловался на "тормознутость". Основные задержки получаются из за времени выполнения SQL.
Intel Pentium 3.06 GHz HT, 1Гб памяти
PrepareScript: Время: 5203 мc., Количество: 2
т.е. время выполнения одного вызова PrepareScript 2.6 секунды
TfsScript.FindLocal: Время: 3126 мc., Количество: 23618
Т.е. из 5 секунды на вызовы TfsScript.FindLocal приходится 3.126,
при переводе TfsScript.FItems: TList на сортированный список строк (TStringList) время вызовов
TfsScript.FindLocal сокращается до 62 мс
Это конечно не совсем шустро, как мне бы хотелось. Но не всякий скриптер "проглотит" такой объем
Суть проекта в том, что пользователи обрабатывают документы в виде Preview FastReport'a, то-есть выбирают документ в списке, открывают форму в которой есть Preview и пара кнопок. Preview при этом и есть сам документ.
Мы начали проект и использовали версию 2.4, а сейчас купили 3.02.
Проблема в том, что на 2.4 Preview открывалось синхронно с открытием формы, а на 3.02 - точно как было описано выше - открывается форма с серым квадратом, задержка на 1-2 сек, открывается Preview.
А репорт то простой одностраничный без скриптов и прочего.
Обидно.
Я бы понял, если можно было бы формировать отчет не в отдельном потоке. Тогда просто форма открывалась бы после завершения генерации отчета.
Хоть и медленно, но не так некрасиво.
TfsScript.FindLocal: Время: 3126 мc., Количество: 23618
при переводе TfsScript.FItems: TList на сортированный список строк (TStringList) время вызовов
TfsScript.FindLocal сокращается до 62 мс
Разница 3.126 с / 62 мс - ускорение в 50 раз