当我试图连续生成四次相同的报告时,我刚刚分析了我的报告应用程序。第一个用了 1859 毫秒,而后面的只用了 400 到 600 毫秒。 对此的解释是什么?我能以某种方式使用它来使我的应用程序更快吗? 报告模块在服务器上运行并等待用户点击“打印报告”。
最佳答案
报表的后续运行已经扩展了内存并填充了各种缓存。
我从未见过您的应用程序,我猜最大的影响是您的数据库服务器缓存了您查询的数据。它将数据从磁盘加载到内存中,并且与该内存没有更好的关系,它将它留在那里。下次查询出现时,数据库不必去磁盘上获取数据,它仍然在内存中。
利用此漏洞的最明显且最简单的方法是在您的用户在系统上松动之前运行一个“假”查询;那将意味着你吸收了 1800 毫秒的等待,而你的用户得到了甜蜜的 400。不幸的是,这只有在所有查询都相同的情况下才有效,即如果每个人都请求相同的报告。如果有不同的报告和不同的数据,缓存将被刷新为不同的数据,加载新结果将需要更多时间。
简而言之:如果你总是有相同的问题,你可以很快给出答案,但你永远不会提出任何新的东西。
关于java - 加速 jasperreports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289873/