gpt4 book ai didi

java - Java代码的性能改进建议(if条件)

转载 作者:行者123 更新时间:2023-12-01 22:48:45 24 4
gpt4 key购买 nike

if 条件中的以下代码将被调用近 10,000 次,并且在测试中显示性能问题。

if (fileUploaderIdListVo != null && fileUploaderIdListVo.size() > 0) {
for (FileUploaderIdVo fuidVo : fileUploaderIdListVo) {
if ( fuidVo.getExploded() != null && fuidVo.getExploded().equalsIgnoreCase("Y")) {
List<Rights> rightsList = rightsDao.list(fuidVo.getContractId());
int contractTitleId = Integer.parseInt(fuidVo.getContractTitleId());
List<Integer> titleRightIds = new ArrayList<Integer>();
for(Rights right: rightsList) {
if(right!=null ) {
titleRightIds.add(right.getId());
}
}
titleRightsManager.saveRightCombination("true", user.getUid(), fuidVo.getContractId(), titleRightIds, contractTitleId,new ArrayList<String>());

}
}
}

我的想法

在if条件之外获取rightsList2. 在if条件之外再次调用saveRightCombination

请提出适当的方法来提高以下代码的性能。

最佳答案

您的瓶颈是访问数据库,而不是 Java 代码。您可以执行以下操作:

  1. 看看哪一个需要更长的时间 - 查询数据库或更新数据库。如果其中一个比另一个贵得多,请首先关注它。
  2. 检查您的 10,000 个查询 - 由于数据库索引问题,它们可能需要一段时间。如果您可以通过添加索引来加快速度 - 就这样做,这是加快速度的最简单方法。
  3. 尝试减少查询数量。不要访问数据库 10,000 次,而是看看是否可以访问它几次(例如,一次加载 1/4 的记录)。这可以节省很多时间。我写的是“一些”而不是“一次”,因为这样您将来可以在必要时将代码拆分为多个线程。
  4. 如果问题出在更新数据库上,请再次查看是否可以联合数据库访问。也许一次发送 500 个更新,导致 20 个数据库更新而不是 10,000 个。如果您的数据库有某种批量复制机制,您可能需要使用它(尽管对于 10,000 条记录,这可能不值得)。

关于java - Java代码的性能改进建议(if条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com