繁体   English   中英

Java中的大型列表迭代速度急剧下降

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM