【问题标题】:Performance Testing Swing application [closed]性能测试 Swing 应用程序 [关闭]
【发布时间】:2010-02-12 21:10:26
【问题描述】:

我们有一个 Java Swing 应用程序,它基本上是一个两层应用程序 - 一个连接到数据库的 UI 层,它在两个层之间执行一些繁重的工作。

我们一直在观察应用程序的一些性能问题,并正在寻找对应用程序进行负载测试的策略。

基本上,我们的目标是启动此应用程序的多个实例并模拟负载,这将有助于我们在测试环境中找出这些性能条件。

我正在寻找有关我们如何做到这一点的建议:

  • 您有什么推荐的工具吗?
  • 方法(虚拟化?/Citrix)

如果您需要更多信息来帮助您回答这个问题,请告诉我。

【问题讨论】:

  • @KM:你在大量使用 JTable 吗?
  • @WizardOfOdds- 是的,我们做到了!它是一个财务应用程序,供中台团队使用,涉及大量计算,JTable 广泛用于显示信息。
  • @KM: 好的,然后看我的回答:)

标签: java swing testing load


【解决方案1】:

好的,我很确定你有 JTable.... 这可能是问题的很大一部分。

但是可以解决,我之前做的一个答案不知道怎么复制链接但是基本上是针对财务数据和JTable的,你想看下面...

Sun 专门为此目的提供了一个名为“圣诞树”的教程,专门解决“经常更新的数据,如金融数据”Swing/JTable 缓慢问题。

来吧,“如何创建经常更新且性能良好的 JTable”:

http://java.sun.com/products/jfc/tsc/articles/ChristmasTree/

我发现真正令人惊奇的一件事是不断显示使用的内存:您可能想要这样做。

您会惊讶于默认 JTable 生成了多少不必要的废话,减慢了一切速度,当然,GC 触发方式比应有的更频繁:不必要的对象创建,不必要的图形重绘等。这一切都使得对于无法使用的应用程序,即使设置非常快。

所以开始实施我给你的链接中给出的所有技巧,你会发现一切都会运行得更加顺畅。我现在正在运行非常复杂且“不断更新”的 JTable,现在一切都很好:)

基本上,除了最简单的情况和少量数据之外,默认的 JTable 实现真的非常糟糕。

一旦您开始使用“真实世界数据”(如金融数据;),如果您希望 JTable 表现良好,则需要按照其中列出的步骤进行操作。

我并不是说这是您减速的唯一原因,但我已经去过那里并且实施了 Sun 在该文章中暗示的大部分提示非常有帮助。实际上,我从一个无法使用的应用程序变成了一个非常有趣的应用程序。

【解决方案2】:

在为应用程序进行性能测试之前,您应该确保遵循正确的 Swing 应用程序线程指南。将您的数据库访问与您的 GUI 绘画保持在一个单独的线程中是很重要的。 See this link for more information.

【讨论】:

  • @akf - 感谢您的回复! - 给你一些背景信息,我继承了这个应用程序,我的目标是找到有最紧迫问题的用例并努力修复它们。我的计划基本上是在应用程序中引入性能日志记录——我正在考虑将 perf4j 与 AOP 一起使用——然后将应用程序的修改版本提供给实际用户,并从日志中找出瓶颈所在。从长远来看,我想做的是提供一个负载测试框架,它可以帮助我识别更高负载的问题。
【解决方案3】:

当涉及到任何类型的测试(包括性能)时,当 UI 和业务逻辑分离时,测试应用程序会容易得多。你提到你有一个 UI 做一些繁重的工作,这通常不是一件好事。您希望能够仅使用其 API(使用 UI 调用的 API)来测试应用程序。

在使用 UI 对整个应用程序进行性能测试时,您可以使用一些性能测试工具来提供帮助。 JMeter 是浮现在脑海中的一种,某些 Google 搜索肯定会找到其他的。

将代码模块化并分离出 UI 和业务代码确实使测试更容易,因此更容易隔离组件并确定性能瓶颈在哪里。如果大部分逻辑都在 UI 之外,您也可以使用标准 Java 分析器来查看大部分时间都花在了哪里。

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2015-08-07
    • 1970-01-01
    • 2011-06-04
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多