Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加速jasperreports_Java_Caching_Jasper Reports_Performance - Fatal编程技术网

Java 加速jasperreports

Java 加速jasperreports,java,caching,jasper-reports,performance,Java,Caching,Jasper Reports,Performance,当我试图连续生成四次相同的报告时,我只是分析了我的报告应用程序。第一个需要1859ms,而下面的只需要400到600ms。 对此有何解释?我可以用它来加快我的应用程序吗? 报表模块在服务器上运行,等待用户单击“打印报表” 报告的后续运行扩展了内存并填充了各种缓存 从未见过你的应用程序,我猜最大的影响是你的数据库服务器缓存了你查询的数据。它将数据从磁盘加载到内存中,与内存没有更好的关系,它将数据留在那里。下次查询出现时,数据库不必转到磁盘上获取数据,它仍然在内存中 利用此漏洞的最明显和最简单的方法

当我试图连续生成四次相同的报告时,我只是分析了我的报告应用程序。第一个需要1859ms,而下面的只需要400到600ms。 对此有何解释?我可以用它来加快我的应用程序吗?
报表模块在服务器上运行,等待用户单击“打印报表”

报告的后续运行扩展了内存并填充了各种缓存

从未见过你的应用程序,我猜最大的影响是你的数据库服务器缓存了你查询的数据。它将数据从磁盘加载到内存中,与内存没有更好的关系,它将数据留在那里。下次查询出现时,数据库不必转到磁盘上获取数据,它仍然在内存中

利用此漏洞的最明显和最简单的方法是在用户在系统上被释放之前运行一个“假”查询;这就意味着你接受了1800毫秒的等待,而你的用户得到了400毫秒的等待。不幸的是,只有在所有查询都相同的情况下,也就是说,如果每个人都请求相同的报告,这才有效。如果有不同的报告和不同的数据,缓存将针对不同的数据刷新,加载新结果将花费更多的时间


简言之:如果你总是有相同的问题,你可以给出非常快速的答案,但这样你就永远不会提出任何新的问题。

谢谢你的建议!我使用的不是db而是xml文件,但效果是一样的。。第一次调用的大部分时间用于xpath查询。没想到会这样,因为它看起来很简单。解析XML是一项难以置信的工作!这个XML多久更改一次?您可以设置一个生命周期侦听器,将XML解析为DOM并将其存储在servlet会话中。然后查询将运行XPath,但不需要打开或解析文件。如果XML偶尔被更新,您可以编写另一个servlet来强制重新解析。在听我说之前:做一些日志记录,找出哪些操作占用了时间。我的建议解决了文件读取和XML解析的成本问题,但也有可能时间花在了其他地方。