嗨,我正在使用java来制作从mysql获取数据的java应用程序,然后将每一行放入JLabel并将其添加到特定的Jpanel中。
我的问题是,当我获取超过4k行时,应用程序需要0.3分钟才能完成上述过程,并且随着行数的增加,时间也会增加。
我计算了mysql的延迟,每60k行的延迟为20.26秒,当我计算应用程序时,对于相同数量的行,几乎是2.5分钟。
所以我的问题是,有什么东西会加速我的应用程序(mysql,java)。
发布于 2013-12-03 19:17:49
从mysql中获取数据,然后将每一行放入JLabel,并将其添加到特定的Jpanel中。
JTable,搜索ResultSetTableModel,TableFromDatabase我的问题是,当我获取超过4k行时,应用程序需要0.3分钟才能完成上述过程,并且随着行数的增加,时间也会增加。
4k超出了人类在标准工作时间内使用一组数据的能力。我计算了mysql的延迟,每60k行的延迟为20.26秒,当我计算应用程序时,对于相同数量的行,几乎是2.5分钟。
SwingWorker运行SwingWorker,从publish()每个100rows到ResultSetTableModel,TableFromDatabase,然后用户可以立即看到第1 100行,其余的行是从由Swing worker管理的工作线程中添加的。发布于 2013-12-03 19:16:03
创建对象是一个昂贵的过程。我建议不要为从DB中获取的每个字段创建单独的标签。您选择不使用JTable/TableModel有什么原因吗?这似乎是表示数据库中数据表的最佳工具。关于如何在网络上使用JTable,有很多例子,所以我不打算在这里描述。
作为一个实验,以确定JLabel创建是否导致了您的问题,请为每一行创建一个标签,而不是为每个字段创建一个JLabel,并查看这在多大程度上改善了问题。
我还支持mKorbel的建议,如果需要立即响应,可以批量处理。这允许您向用户提供一些即时数据,并在其可用时查询和提供其余的信息。
这对于您的大型数据集非常有用,前提是用户在能够做出决定或得出所需的结论之前不需要所有信息(即首先解决导致他们查询的问题)。如果是这样的话,一个繁忙的指标可能是最好的。
祝好运!
https://stackoverflow.com/questions/20359635
复制相似问题