Методы повышения скорости работы FastReport3

Eugene LachinovEugene Lachinov Санкт-Петербург
отредактировано 06:54 Раздел: FastReport 3.0
Есть ли они ?, как то все не шустро ;)

Комментарии

  • отредактировано 06:54
    Метод навскидку - поставить более "шутрый" процессор ;) )
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    Vano написал:
    Метод навскидку - поставить более "шутрый" процессор ;) )
    Intel Pentium 3.06 GHz HT, 1Гб памяти ;)
  • отредактировано 06:54
    А что именно не шустро - у меня как-то и на athlon 1800 работает все хорошо.
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    AlexTZ написал:
    А что именно не шустро - у меня как-то и на athlon 1800 работает все хорошо.
    По ShowReport на FastReport 2.5 предварительный просмотр открывается сразу
    На FastReport 3.0 появляется пустое окно предварительного просмотра, задержка секунд пять, показывается печатная форма, если в какое-либо поле отчета добавить ошибку, то после показа печатной формы спустя тоже порядка 5-10 секунд показывается текст ошибки

    DesignReport тоже вызывается несколько с напрягом, если в самом дизайнере Дизайнере загрузить другую форму, то не блокируется перерисовка панели Поля БД, дерево мигает

    В печатной форме есть код, порядка 500 строк, может скрипт тормозит, пока не знаю ;)
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    Eugene Lachinov написал:
    если в самом дизайнере Дизайнере загрузить другую форму, то не блокируется перерисовка панели Поля БД, дерево мигает
    При очистке списка DataSet-ов, UpdateDataTree вызывается на уничтожении каждого TfrxDataSet ;)
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    наблюдение:
    TfrxReport.PrepareScript вызывается два раза, первый
    раз в procedure TfrxDesignerForm.PreviewCmdExecute(Sender: TObject);
    а потом в TfrxReport.PrepareReport(ClearLastReport: Boolean = True): Boolean;
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    Немного статистики ;)

    PrepareScript: Время: 5203 мc., Количество: 2
    TfsScript.FindLocal: Время: 3126 мc., Количество: 23618
  • отредактировано 06:54
    PrepareScript - 5 секунд??? Либо скрипт размером с classes.pas, либо процессор P1-75, либо что-то третье...
  • отредактировано 06:54
    У скриптера, реализованного в Fastreport 3, задачи дополнительного средства для построения отчетов, а не написания крутых программ на нем. Если желаете писать офигенные программы берите, например, DreamScripter, у него наверное скорость, быстродействие, функциональность будет побольше.
    От себя добавлю, что что в своей проге отлично уживаются Fastreport со своим скриптером и свой самописный скриптер, которые поддерживает 90-95 % синтаксиса Object Pascal (с инспекторами объектов, палитрой компонентов и т.д.). Предварительную обработку и получение данных провожу на своем скриптере, а дальнейшую уже средствами Fastreport. Так что никто из пользователей не жаловался на "тормознутость". Основные задержки получаются из за времени выполнения SQL.
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    AlexTZ написал:
    PrepareScript - 5 секунд??? Либо скрипт размером с classes.pas, либо процессор P1-75, либо что-то третье...
    Скрипт, написано выше, порядка 500 строк

    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 мс

  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    SeregaG написал:
    У скриптера, реализованного в Fastreport 3, задачи дополнительного средства для построения отчетов, а не написания крутых программ на нем. Если желаете писать офигенные программы берите, например, DreamScripter, у него наверное скорость, быстродействие, функциональность будет побольше.
    Вы еще, наверно, не совсем разобрались с FastReport 3 и для чего предназначен FastScript ;)
  • отредактировано 06:54
    Eugene Lachinov написал:
    Eugene Lachinov написал:
    У скриптера, реализованного в Fastreport 3, задачи дополнительного средства для построения отчетов, а не написания крутых программ на нем. Если желаете писать офигенные программы берите, например, DreamScripter, у него наверное скорость, быстродействие, функциональность будет побольше.
    Вы еще, наверно, не совсем разобрались с FastReport 3 и для чего предназначен FastScript ;)
    Наверное не разобрался ;) . Но своим скриптером текст 7909 строк+ DFM 4052 строчки + в Uses сидят несколько файлов сриптовых компилится 1,418 секунды (один из самых больших модулей в программе - редактирование накладной).
    Это конечно не совсем шустро, как мне бы хотелось. Но не всякий скриптер "проглотит" такой объем ;)
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    SeregaG написал:
    Но своим скриптером текст 7909 строк+ DFM 4052 строчки + в Uses сидят несколько файлов сриптовых компилится 1,418 секунды (один из самых больших модулей в программе - редактирование накладной).
    Это конечно не совсем шустро, как мне бы хотелось. Но не всякий скриптер "проглотит" такой объем ;)
    Искренне рад за Вас ;) , но хотелось бы чтобы FastScript и FastReport 3.0 оправдывали свое название
  • отредактировано 06:54
    У меня тоже аналогичный вопрос по производительности и не только.
    Суть проекта в том, что пользователи обрабатывают документы в виде Preview FastReport'a, то-есть выбирают документ в списке, открывают форму в которой есть Preview и пара кнопок. Preview при этом и есть сам документ.
    Мы начали проект и использовали версию 2.4, а сейчас купили 3.02.
    Проблема в том, что на 2.4 Preview открывалось синхронно с открытием формы, а на 3.02 - точно как было описано выше - открывается форма с серым квадратом, задержка на 1-2 сек, открывается Preview.
    А репорт то простой одностраничный без скриптов и прочего.
    Обидно.
    Я бы понял, если можно было бы формировать отчет не в отдельном потоке. Тогда просто форма открывалась бы после завершения генерации отчета.
    Хоть и медленно, но не так некрасиво.
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    Вопрос к авторам: будут ли мзменения в FastScript в плане ускорения ?
  • отредактировано 06:54
    Нет, не будет. Ибо быстрее уже некуда...
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    AlexTZ написал:
    Нет, не будет. Ибо быстрее уже некуда...
    Текст был написан выше

    TfsScript.FindLocal: Время: 3126 мc., Количество: 23618

    при переводе TfsScript.FItems: TList на сортированный список строк (TStringList) время вызовов
    TfsScript.FindLocal сокращается до 62 мс

    Разница 3.126 с / 62 мс - ускорение в 50 раз ;)
  • отредактировано 06:54
    Я не увидел особого смысла в оптимизации FindLocal. На некоторых скриптах, возможно, смысл и будет. Кстати, можно взглянуть на Ваш скрипт?
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 06:54
    AlexTZ написал:
    Я не увидел особого смысла в оптимизации FindLocal. На некоторых скриптах, возможно, смысл и будет. Кстати, можно взглянуть на Ваш скрипт?
    Ну, если в ускорении в 50 раз не видите смысла, то, конечно, продолжать "Я не увидел особого смысла " ;)
  • отредактировано 06:54
    Еще раз - я на тестовых скриптах смысла в этой оптимизации не увидел. Поэтому и попросил взглянуть на ваш скрипт...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.