[英]Dramatic slowing down in large List Iterate in java
我有一个Java EE项目。 在一个EJB中,我需要迭代一个包含35.000个对象的大型列表。 在每个循环中,数据库中都有比较,并使用JPA和EntityManager进行多次插入或更新。
一开始,解析500行(可接受)大约需要5到7秒,但它的速度正在逐渐放缓。 10.000次迭代后,需要26秒才能处理500条线! :
我查看了visualVM,找不到CPU故障或内存泄漏:
我尝试用“经典”语句进行迭代,用“ for each” Java 8 Stream进行迭代,但是结果是相同的。
为什么会放慢速度?
我会尝试在黑暗中拍照,并说数据库可能是您的瓶颈。
插入的次数越多,数据库必须比较的条目就越多。 因此,可能会增加执行该特定任务所需的时间。
在这种情况下,创建表索引也可能是一个问题。 您可能需要进一步分解任务,以便找到真正的瓶颈,但是如果没有进一步的信息,就没有明确的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.