根据我的理解,java程序的执行速度非常快,使应用程序变慢的主要原因是网络和IO操作。
例如,如果我有一个运行10000次的for循环打开一个文件,则处理一些数据并将数据保存回文件。 如果应用程序运行缓慢,则不是因为循环执行10000次,而是因为循环内的文件打开和关闭。
我有一个MVC应用程序,在我查看页面之前,我经过一个Controller,后者又调用了Services,最后调用了一些DAO方法。
问题是在页面加载之前有很多查询被触发,因此页面加载时间是2分钟,这是可悲的。
由于服务调用各种DAO方法,并且每个DAO方法使用不同的连接对象,我想到这样做:“只创建一个服务可以调用的DAO方法,这个DAO方法将触发所有查询连接对象。“
这样可以节省连接和断开连接数据库的时间。
但是,我的应用程序中的连接对象来自连接池。并且大多数连接池都不会关闭它们只是将它们发送回连接池的连接。所以我的上述解决方案不会产生任何影响,因为无论如何都没有打开和关闭连接。
如何提高应用程序的性能?
答案 0 :(得分:1)
首先,您应该使用Profiler等工具准确确定花费的时间。
知道根本原因后,您可以查看是否可以优化操作,即删除不必要的步骤。如果没有,那么您可以查看是否可以缓存和重用操作的结果。
如果没有准确理解花费时间的处理,就很难做出任何合理的优化。
答案 1 :(得分:1)
如果重用池中的连接对象,这意味着连接/断开连接不会产生任何性能问题。
我同意Ashwinee K Jha的说法,Profiler会给你一些关于你可以优化的明确信息。
同时还有其他一些想法/建议:
答案 2 :(得分:0)
您可以使用使用连接池的Apache DBCP,调用数据库IO的成本很高,但主要是数据库连接打开和关闭占用大量时间。 您还可以增加maxIdle时间(池中可以保持空闲的最大连接数) 您还可以查看内存数据网格中的 ,例如hazelcast等
答案 3 :(得分:0)
一些建议: