自动检测Java中存在潜在性能问题的循环

时间:2014-06-30 13:40:41

标签: java eclipse performance performance-testing sonarqube

考虑以下java代码:

for (Entity entity : entities) {
  if(entity.getSubEntity().getField() == pField) {
  return entity.getAnotherField();
  }
}

如果entities包含大量条目,则此代码可能会在生产环境中导致性能问题。如果仅使用小列表进行测试,则测试可能无法找到问题。

我知道为问题编写动态测试的可能性,但我正在寻找一种静态分析和查找此问题的潜在实例的方法,而无需手动查看代码库中的每个for循环。

我的问题是,如何在我的大型代码库中自动检测此问题的其他实例?

eclipse,内置或插件中是否有机制?

对于这个问题,sonarqube有规则吗?是否可以编写自定义规则?

1 个答案:

答案 0 :(得分:3)

没有像这样的“问题”的自动化工具,因为它不是问题:从代码中的数千个循环中,只有一两个可能最终导致问题,具体取决于您的过程数据。

因此,当您确定瓶颈时,您需要运行代码,听取反馈并在代码上运行探查器。手动