Я просто профилировал приложение для отчетов, когда пытался создать в четыре раза один и тот же отчет подряд. первый занял 1859 мс, тогда как следующие были заняты только между 400 и 600 мс. Каково объяснение этому? мог ли я каким-то образом использовать его для ускорения моего приложения? модуль отчетности работает на сервере и ждет, пока пользователь нажмет «распечатать отчет».ускорение jasperreports
ответ
Последующие прогоны отчета расширили память и заполнили различные кеши.
Никогда не увидев ваше приложение, мое предположение было бы самым большим эффектом в том, что ваш сервер базы данных кэширует данные, которые вы запрашиваете. Он загружает данные с диска и в память и не имеет ничего общего с этой памятью, он оставляет его там. В следующий раз, когда запрос приходит, база данных не должна идти на диск для данных, она все еще присутствует в памяти.
Очевидным и простым способом использования этого является запуск одного «поддельного» запроса до того, как ваши пользователи будут освобождены в системе; это означало бы, что вы втянете 1800 мс ожидания, а ваши пользователи получат сладкий 400. К сожалению, это будет работать только в том случае, если все запросы одинаковы, т. е. если каждый запрашивает один и тот же отчет. Если есть разные отчеты и разные данные, кеши будут очищены для разных данных, и для загрузки новых результатов потребуется больше времени.
Вкратце: если у вас всегда был тот же запрос, вы могли бы дать очень быстрые ответы, но тогда вы никогда не представили ничего нового.
- 1. Интерактивные функции JasperReports без привлечения сервера JasperReports
- 2. Обновление JasperReports 1.3.1 до JasperReports 4.6
- 3. JasperReports Connection
- 4. Сервер JasperReports
- 5. JasperReports CompileReport
- 6. FileNotFoundException Jasperreports
- 7. JasperReports выравнивание
- 8. Группы JasperReports
- 9. Ускорение Dijkstra
- 10. Ускорение запроса
- 11. Ускорение прогноза
- 12. ускорение запроса
- 13. ускорение вычисление?
- 14. Ускорение таймера?
- 15. Ускорение jenkinsapi
- 16. Ускорение цикла
- 17. Ускорение CakePHP
- 18. Ускорение JavaScript
- 19. Ускорение UIPageViewController
- 20. Ускорение beautifulsoup
- 21. Ускорение C#
- 22. Ускорение шифрования?
- 23. Ускорение roxygen
- 24. Ускорение list.contains
- 25. ускорение scipy.integrate.quad()?
- 26. Ускорение смещения
- 27. Ускорение setTextFormat()
- 28. Ускорение итераций
- 29. Ускорение сбора
- 30. Ускорение feedparser
thx за советом! Я не использую db, но xml-файлы, но эффект тот же. Большая часть времени первого вызова переходит к xpath-запросу. не ожидал этого, так как выглядит так банально. – martin
Анализ XML - это невероятное количество работы! Как часто этот XML изменяется? Вы можете настроить прослушиватель жизненного цикла, который анализирует XML в DOM и сохраняет его в сеансе сервлета. Тогда запросы будут запускаться XPath, но не нужно открывать или анализировать файл. Если XML иногда обновляется, вы можете написать еще один сервлет, который заставляет повторно разбор. –
Прежде, чем вы меня послушаете: выполните некоторые протоколирования и выясните, какие операции всасывают время. В моих рекомендациях рассматриваются затраты на чтение файлов и разбор XML, но это время можно потратить в другом месте. –